在es6出现之前,js总共有6种类型,其中5种是基本类型。boolean、number、string、undefined、null、object。es6出现后,symbol诞生。
symbol是什么?
symbol 被引入的原因是为了保证每个属性名都是独一无二的,都是不冲突的。即,symbol表示独一无二的值!
typeof Symbol() // symbol
let s = Symbol()
let t = Symbol()
s==t //false
保证属性名独一无二,常用于对象
如,
let obj1 = {name: 'dandan', age: 23};
let obj2 = {name:'xiaoqi',sex:'man'};
let obj3 = Object.assign(obj1,obj2);//{name: "xiaoqi", age: 23, sex: "man"}
在es6出现之前,js总共有6种类型,其中5种是基本类型。boolean、number、string、undefined、null、object。es6出现后,symbol诞生。 symbol是什么? symbol 被引入的原因是为了保证每个属性名都是独一无二的,都是不冲突的。即,symbol表示独一无二的值!
保证属性名独一无二,常用于对象 如,
其中obj1中name:'dandan'丢失了 这个使用通过用symbol,就可以防止这样的情况,如下
需要注意的是,symbol作为属性名,不能被for in ,for of循环遍历,也不会被Object.keys(),Object.getOwnPropertyNames(),JSON.stringify返回。他只能通过Object.getOwnPropertySymbols获得。 如下: