首頁  >  文章  >  web前端  >  關於javascript的包裝類型對象

關於javascript的包裝類型對象

巴扎黑
巴扎黑原創
2016-11-25 11:59:271012瀏覽

先看這樣一些測試程式碼,我們能從當中發現哪些問題:

var str=”likeke”;

str;//”likeke”

str.length;//6

str.age=22 ;

str.age;//undefined;

 

var mystr=new String(“likeke”);

mystr;//String {0: "l", 1: "i", 2: "k ", 3: "e", 4: "k", 5: "e", length: 6, [[PrimitiveValue]]: "likeke"}

mystr.length;//6

mystr.age=22 ;

mystr.age;//22

第一個問題:為什麼基本類型string可以存取到length屬性?

第二個問題:string的包裝類型可以存取到自訂的屬性,但基本類型的為什麼string卻訪問不到?

原因:1.當我們以物件的形式存取一個基本型別string的屬性或為其建立新屬性的時候,js引擎會將其轉換為對應的包裝型物件;

             2.當我們增加一個自             2.當我們增加一個自 定義屬性之後,這個臨時物件會被立即銷毀。因此,再次存取此屬性時(也會再次轉換為其包裝類型)顯示為undefind 。

除了string之外,其它基本類型也是類似的原理,例如,(666).toString().length;//3


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