我們都知道只有對象才有屬性值,那么問題來了,字符串作為基本變量為何也能夠調(diào)用length屬性?
原來是這樣的:
- 字符串、數(shù)值以及布爾值在訪問屬性或者調(diào)用方法的時候內(nèi)部會隱式的創(chuàng)建一個對象,利用該對象來訪問屬性或者是調(diào)用方法
- 得到結(jié)果之后,把結(jié)果賦值給基本數(shù)據(jù)類型的值
- 銷毀這個創(chuàng)建的對象
這樣就能夠理解為什么基本屬性也能夠使用屬性了0.0
下面上幾個例子來清楚的了解一下:
var str1 = "demo01"; //string
var str2 = new String("demo01"); //object
var str3 = String("demo01");
console.log(str1 == str2); //true 轉(zhuǎn)換
console.log(str1 === str2); //false
console.log(str1.length); //6
str1.des = "描述信息";
console.log(str1.des); //undefined,賦值完直接銷毀,所以找不到值
str2.des = "des";
console.log(str2.des); //輸出des,因?yàn)閟tr2為object類型