Symbol 值通過Symbol函數(shù)生成。這就是說,對象的屬性名現(xiàn)在可以有兩種類型,一種是原來就有的字符串,另一種就是新增的 Symbol 類型。凡是屬性名屬于 Symbol 類型,就都是獨一無二的,可以保證不會與其他屬性名產(chǎn)生沖突。我們知道當我們聲明相同相同的屬性名的時候后面的會覆蓋點前面聲明的,如下:
const classRoom={
lili:{grade:60,gender:'female'},
marray:{grade:80,gender:'female'}
marray:{grade:90,gender:'female'}
}
console.log(classRoom);
可以看出后面的屬性覆蓋了前面的同名屬性。
使用Symbol函數(shù):
const classRoom={
[Symbol('lili')]:{grade:60,gender:'female'},
[Symbol('marray')]:{grade:80,gender:'female'}
[Symbol('marray')]:{grade:90,gender:'female'}
}
console.log(classRoom);
運行結(jié)果:
但是不能使用for in 遍歷
for (let key in classRoom) {
console.log(key);//什么都沒有打印出來
}
那么如何獲取對象的屬性呢,可以使用Object.getOwnPropertySymbols (classRoom)
要獲取到屬性的值可以用map方法
const pro =Object.getOwnPropertySymbols (classRoom);
pro.map(syms=>{
console.log(classRoom[syms]);
});
---------------------
作者:weixin_42554311
來源:CSDN
原文:https://blog.csdn.net/weixin_425 ... 566?utm_source=copy
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
本文版權(quán)歸黑馬程序員前端與移動開發(fā)培訓學院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:前端與移動開發(fā)培訓學院
首發(fā):http://java.itcast.cn/?skc