关于Symbol
在对象上设置Symbol
使用 []
使用Object.defineProperty
js
let mySymbol = Symbol();
Object.defineProperty(a, mySymbol, { value: 'Hello!' });
WARNING
不能使用点运算符访问
js
Object.defineProperty(a, mySymbol, { value: 'Hello!' });
a.mySymbol // 报错
而我们要写的Iterator则是内置的Symbol值 对象的Symbol.iterator属性,指向该对象的默认遍历器方法。
js
const myIterable = {};
myIterable[Symbol.iterator] = function* () {
yield 1;
yield 2;
yield 3;
};
[...myIterable] // [1, 2, 3]