0%

Symbol

Symbol是具有唯一性的特殊标识符,符号可以用作属性名,但无论是在代码还是控制开发台都无法查看和访问它的值,只会显示Symbol(Symbol.create)类似的值

ES6中有预定义的符号,以Symbol的静态属性形式出现,如Symbol.create,Symbol.iterator,可以这样使用:

1
obj[Symbol.iterator]=function(){}

可以使用Symbol(…)原生构造函数来自定义符号,但是不能用new

1
2
3
4
5
6
7
var mysym=Symbol("my on symbol")
console.log(mysym.toString())//Symbol(my on symbol)
console.log(typeof mysym);//symbol
var a={}
a[mysym]="foorbar"
console.log(Object.getOwnPropertySymbols(a));//通常用来命名私有或特殊属性,替代下划线(_)前缀的属性
//[Symbol(my on symbol)]

Symbol不是对象,是一种简单的标量基本类型