首页技术文章正文

ES6 symbol数据类型

更新时间:2018-10-19 来源:黑马程序员技术社区 浏览量:

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

分享到:
在线咨询 我要报名
和我们在线交谈!