想一下:爲何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 。