javascript對於值型別資料的物件包裝簡單介紹

antzone發表於2017-04-05

本本章節簡單介紹一下javascript對於值型別資料(簡單型別資料)的封裝,希望能夠給需要的朋友帶來一定的幫助。

如果我們要使用一個字串,通常會使用如下方式宣告,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var str="softwhy.com";

很明顯,上面是一個值型別資料,但是它可以呼叫方法對資料進行操作,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var str="softwhy.com";
console.log(str.toUpperCase());

上面的程式碼可以正常執行。按照正常的理論,只有物件才可以呼叫方法,為什麼一個值型別資料也可以呢。

這是因為javascript會對值型別資料進行隱式的包裝操作,過程可以理解為如下:

[JavaScript] 純文字檢視 複製程式碼
var str=new String("softwhy.com")
console.log(str.toUpperCase());

但是對於str的包裝只是暫時的,當呼叫完成之後,資料又會立馬還原為值型別,可以理解為進行了如下操作:

[JavaScript] 純文字檢視 複製程式碼
var str=new String("softwhy.com")
consoloe.log(str.toUpperCase());
str="softwhy.com";

再來看一段程式碼例項來證明一下上面的論斷:

[JavaScript] 純文字檢視 複製程式碼
var str="softwhy.com";
str.antzone="螞蟻部落";
consoloe.log(str.antzone);

上面的程式碼並不能輸出期望的antzone屬性值,這是因為當str建立antzone屬性的時候會包裝成一個物件。

賦值完畢以後,裡面又會通過類似str="softwhy.com"方式成為一個值型別,當然也就沒有antzone屬性了。

對於其他的值型別資料也是如此,這裡就不多介紹了。

相關文章