Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。我们知道当我们声明相同相同的属性名的时候后面的会覆盖点前面声明的,如下:
const classRoom={
lili:{grade:60,gender:'female'},
marray:{grade:80,gender:'female'}
marray:{grade:90,gender:'female'}
}
console.log(classRoom);
可以看出后面的属性覆盖了前面的同名属性。
使用Symbol函数:
const classRoom={
[Symbol('lili')]:{grade:60,gender:'female'},
[Symbol('marray')]:{grade:80,gender:'female'}
[Symbol('marray')]:{grade:90,gender:'female'}
}
console.log(classRoom);
运行结果:
但是不能使用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
版权声明:本文为博主原创文章,转载请附上博文链接!
本文版权归黑马程序员前端与移动开发培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:前端与移动开发培训学院
首发:http://java.itcast.cn/?skc