-
最新的 ECMAScript 標準定義了 7 種數據類型:
2. 簡單瞭解到JavaScript的7種數據類型,下面咱們來詳細介紹下Object數據類型。
在JavaScript語言中,全部的類最底層的原型鏈都會指向Object的原型。所以基本上全部的類都繼承了Object原型方法。也得此緣由Object數據類型又能夠分解以下。
-
Array (數組類型)
-
-
Date (時間類型)
-
JSON (json格式數據,瀏覽器內置對象)
詳情
-
-
-
3. 以上詳細列舉了JavaScript中的Object數據類型。那麼順便來談一談引用類型。什麼是引用類型啦,它又有什麼做用呢。
//基礎類型數據
var a = 'zhangxiao',
b = 123,
c = true;
//Object類型數據
var d = {name:"zhangxiao",age:27,isMarry:false},
d1 = [d];//將d放入d1數組中
console.log(d, '\n', d1, '\n', d2);
// {name:"zhangxiao", age:27, isMarry:false}
// [{name:"zhangxiao", age:27, isMarry:false}]
//修改基礎類型數據
var e = a,
f = b,
g = c;
e = 'zx',
f = 321,
g=false;
console.log(a, b, c, '----', e, f, g);
// 'zhangxiao', 123, true, ----, 'zx', 321, false
//修改Object類型數據
var h = d,
d2 = d1.concat(); //淺複製d1數組
h['isMarry'] = true;
d2[0]['name'] = 'zx';
//引用類型的數據改變,其全部指向引用的數據均改變,基礎類型改變,並不引發其餘原始數據改變
console.log(h, '\n', d, '\n', d1, '\n', d2, '\n', d1===d2, '\n', d1[0]===d2[0]);
// {name:"zx",age:27,isMarry:true}
// {name:"zx",age:27,isMarry:true}
// [{name:"zx",age:27,isMarry:true}]
// [{name:"zx",age:27,isMarry:true}]
// false /** 由於d2是有d1數組鏈接生成的新數組,等同於淺拷貝,故d1和d2是兩個不一樣數組 */
// true /** 由於d2是d1淺拷貝,而d1中的元素是Object類型,故d2的元素是引用的d1元素也所以是同一元素 */複製代碼
那麼看到以上的引用事後是否是會想到它有什麼用呢,怎麼用它!
在此我在給你們舉個例子,Vue是當前用的比較火的一個框架,想必你們必定遇到過父子組件間通訊的問題,除了運用Vue提供的 $emit,還能夠運用上述所說的引用方式通訊。子組件修改數據,父組件也跟隨修改,由於子組件的數據是經過引用方式得到。這樣的通訊高效簡潔,Vue官方也非常推薦。固然它的用途不只體現如此,還好比函數傳參,如a函數想修改b函數的變量,這時運用引用也是很恰當的。