首頁  >  文章  >  web前端  >  深入理解js包裝類

深入理解js包裝類

零到壹度
零到壹度原創
2018-04-12 11:21:292669瀏覽

這篇文章給大家分享的內容是深入理解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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn