這篇文章給大家分享的內容是深入理解js包裝類,有著一定的參考價值,有需要的朋友可以參考一下
說包裝類之前我們先看下面這個範例
var str = 'hello'; str.name = 'world'; console.log(str.name);
答案是什麼呢?
這不顯而易見的嗎,上面str都為已經為自己增加了一個屬性名為name,值為world,輸出出來肯定是world啊!
我想在你看到這段程式碼的時候,腦子第一時間想到的就是這個!
那麼恭喜你,答錯了! 值為undefined!
我們知道,js中除了原始值外,其他都是對象,對象可以有自己的屬性和方法。 (方法就是當屬性為函數的時候,我們稱之為方法)
那麼原始值有沒有自己的屬性呢;
var str = 'hello'; console.log(str.length) // 6
我們呼叫字串length的方法是可以和陣列一樣印出來他的個數的。
字串既然不是對象,為什麼會有自己的方法呢?
這是因為我們只要用了str的屬性,js就會呼叫 new String(str)將str包裝為對象,這個物件繼承了String上面的方法。
這上面全都是String的方法。
但是如果String上面沒有你想要的屬性呢?
那麼js會在String上面建立一個屬性,但是,在創建之後,隨即銷毀.
#下面我們再來看這個例子
var str = 'hello'; str.name = 'world'; /* 上面这一步str给他自己设置一个名为name,值为world的属性,于是js就new String(str).name = 'world'; 创建之后,销毁 */ console.log(str.name) /* 这一步 js又new String(str).name 但是没有值, 所以值为undefined, */
同樣,number和boolean也是
以上是深入理解js包裝類的詳細內容。更多資訊請關注PHP中文網其他相關文章!