Javascript/ES6的Symbol用法
Symbol是一个不可变的数据类型,用来产生唯一的标识,但是却无法直接访问这个标识。
这里是创建一个symbol:
var sym = Symbol( "some optional description" ); console.log(typeof sym); // symbol
请注意,你不能使用new Symbol创建它。
如果一个symbol被用于对象的属性/key,它是以特殊方式存储,不会以正常方式显示在对象的属性中。
var o = { val: 10, [ Symbol("random") ]: "I'm a symbol", }; console.log(Object.getOwnPropertyNames(o)); // val
为了返回一个对象的symbol属性,必须使用Object.getOwnPropertySymbols(o)
ES6有一个Symbol.iterator,能够指定对象的默认iterator:
var arr = [11,12,13]; var itr = arr[Symbol.iterator](); itr.next(); // { value: 11, done: false } itr.next(); // { value: 12, done: false } itr.next(); // { value: 13, done: false } itr.next(); // { value: undefined, done: true }