【发布时间】:2018-09-15 12:52:35
【问题描述】:
JavaScript 中的“Iterables”是具有Symbol.iterator 属性的对象。例如:
let x = {
[Symbol.iterator]: function * () {
yield * [ 1, 2, 3];
}
};
[ ...x ] // Array [ 1, 2, 3 ]
所以Symbol.iterator 只是一个约定。
但是为什么 Symbol 这个概念是在 string 可以完成类似工作时发明的呢?
let x = {
iterator: function * () {
yield * [ 1, 2, 3 ];
}
};
// Invalid, but would be equivalent to [ ...x['iterator']() ]
[ ...x ]
【问题讨论】:
-
我的猜测是符号保证是唯一的并且不会导致名称冲突,也可能比字符串更有效。不过,这纯粹是我的猜测。
标签: javascript symbols