包裝類:
JavaScript 的數(shù)據(jù)類型分兩種:
基本數(shù)據(jù)類型:數(shù)字類型、字符串、布爾、null、undefined、Symbol。
引用數(shù)據(jù)類型:數(shù)組、對(duì)象、Set、Map。
基本數(shù)據(jù)類型存儲(chǔ)的是原始值本身,而引用數(shù)據(jù)類型存儲(chǔ)的值的引用。
概念:在 JavaScript 中,提供了三種特殊的引用類型構(gòu)造函數(shù):Boolean、Number、String。每當(dāng)我們調(diào)用與之相關(guān)的基本類型數(shù)據(jù)時(shí),JavaScript的后臺(tái)都會(huì)調(diào)用它們來創(chuàng)建一個(gè)對(duì)應(yīng)的對(duì)象,從而能夠調(diào)用一些方法來操作這些數(shù)據(jù),這就是包裝類。
以下代碼為列:

var a = 'abc';
console.log( a.length);?? // 輸出結(jié)構(gòu)為3
// 在調(diào)用 a.length 時(shí),JavaScript引擎實(shí)質(zhì)上進(jìn)行了類似于以下面這樣的操作:
// 1. var a1 = new String(abc);???? => 臨時(shí)創(chuàng)建了一個(gè)相對(duì)于 變量a 值 的對(duì)象。
// 2. ( a.length )的值 = a1.length;???? => 調(diào)用這個(gè)臨時(shí)對(duì)象的方法。
// 3. a1 = null;??? => 銷毀這個(gè)臨時(shí)對(duì)象。

注意!雖然基本類型能使用 包裝類 的一些方法,但是創(chuàng)建的臨時(shí)對(duì)象,在方法調(diào)用完后就會(huì)被立刻銷毀。所以前往不要將基本類型當(dāng)成對(duì)象,。

var?str?=?'Hello';
str.myObj?=?'World';
console.log(?str.myObj);?//?undefined
//?str?是基本類型,不是對(duì)象,故而不能添加自定義屬性。
var?str1?=?String('Hello');
str1.myObj?=?'World';
console.log(str.myObj);?//?undefined
console.log(str?===?str1);?//?true
// 由此可知,通過函數(shù)調(diào)用方式創(chuàng)建的是基本類型數(shù)據(jù)
var str2 = new String(Hello);
str2.myObj = 'World';
console.log( str2.myObj );?// World
// str2 是new 出來的,是對(duì)象,所以是可以添加自定義屬性的。
