想一下:為什么String類型的值可以調用某些方法和訪問某些屬性呢?
在基本數據類型中有3個特殊的存在:String Number Boolean
這三個基本類型都有自己對應的包裝對象。包裝對象,其實就是對象,有相應的屬性和方法。調用方法的過程,是在后台偷偷發生的,所以我們稱作為基本包裝類型。
//我們平常寫程序的過程:
var str = 'hello'; //string 基本類型
var s2 = str.charAt(0); //在執行到這一句的時候 后台會自動完成以下動作 :
//后台偷偷發生的
(
var _str = new String('hello'); // 1.創建String類型的一個實例
var s2 = _str.chaAt(0); // 2 在實例上調用指定的方法,並且返回結給s2
_str = null; // 3.銷毀這個實例
)
alert(s2);//h
alert(str);//hello
在看一個例子
var str = 'string';
str.pro = 'hello';
console.log(str.pro);
當執行 str.pro = 'hello' 時,實際上內部創建了一個基本包裝類型的實例,然后給這個實例的 pro 屬性賦值為 hello,實例創建后馬上銷毀了,當下一次試圖獲取 str.pro 的值時,又會創建一個基本包裝類型的實例,顯然新創建的實例時沒有 pro 屬性的,為 undefined,所以最后輸出 undefined 。