JS裡面的鎧甲合體!
- 2019 年 10 月 19 日
- 筆記
本標題黨又回來了,最近在專心研究一些JS基礎性的書籍,以期把原理都了解透徹,所以寫文章的頻率就降了下來。但是今天我必須要來寫一下子,為什麼呢,因為今天周五!先說明一下JS裡面的拆箱與裝箱指的是JS封箱和拆箱,已經玩的很六的大佬就不要浪費時間啦,抓緊研究更深的!
引子:

我們來看一下這段簡單的程式碼,可能有的人會問這有啥,不就是新建一個字元串然後調用字元串上的方法嘛,其實這裡面還是有點餡的,下面讓我們來嘗一嘗究竟是什麼餡料
首先在JS裡面字元串是屬於基本數據類型的,那為何基本數據類型上會有方法呢,我套你個猴子的,有方法那不是成對象了。
要解釋這個問題我們就不得不提JS裡面的一種機制,封裝對象的包裝與拆裝,即裝箱與拆箱。
裝箱:
當我們在基本數據類型上調用方法的時候,JS會默認進行裝箱操作。啥叫裝箱呢,下面讓我來操作一波好吧。
相信在座的各位或多或少都看過鎧甲勇士吧,鎧甲勇士一般的橋段就是ERP研究室基地發現有小怪獸出現了,會通知鎧甲勇士,此時此刻他們大喊一聲鎧甲合體!就由一個普通人變為了鎧甲勇士,什麼火焰拳之類的在普通人狀態沒有的技能統統都來了!

這就跟裝箱操作一樣一樣的嗷,JS引擎就是ERP基地,而基本數據類型的變數就相當於普通人,方法則相當於技能。作為普通人是沒有火焰拳技能的,但是穿上鎧甲之後不止能調用函數,打十個都行,來評論區上來幾個我給你們示範一下子。這個還要注意一下不是啥技能都能放的,只能放對應鎧甲的技能,比如你穿個炎龍鎧甲放出個風鷹腿來,你以為你誰,導演嗎?這和JS原理是一樣的,雖說JS會進行裝箱操作,但也不會亂裝,字元串裝成字String對象,數字裝成Number對象…

拆箱:
當技能被放了,小怪獸被消滅了完了怎麼辦呢,當然是取消鎧甲合體變回一個普通人咯。JS也這樣的,函數也調用完了是吧,調完了就給拆開,把變數重新變回一個基本數據類型的變數。
還有一點需要注意一下,裝箱完了使用後會進行拆箱,就跟穿鎧甲打完小怪獸裝完***後總得解除合體吧,如果一直穿著可就顯得有點獃滯了啊!
結語:
好了,今天就先到這裡了,上午看到有人說技術文章不應該扯很多廢話,個人認為分情況吧,如果多扯幾句能記憶更深刻,理解的更透徹,那何樂而不為呢,大家怎麼看呢


