【发布时间】:2018-01-05 22:58:06
【问题描述】:
在注释中指出:
iterable 协议允许 JavaScript 对象定义或自定义 它们的迭代行为,例如在一个 for..of 构造。
当我已经可以使用 Object.degineProperty 使某些东西可枚举时,我看不出这有什么好处。
function withValue(value) {
var d = withValue.d || (
withValue.d = {
enumerable: false,
writeable: false,
configuration: false,
value: null
}
)
// other code;
}
这些协议有什么好处?如果这只是一些新的语法来安抚新的 for...of 循环,那么除了简单地检查长度并查看它是否用完“列表”中的项目之外,它还有什么好处。
【问题讨论】:
-
属性的可枚举性与迭代器完全无关?最重要的是,属性没有迭代的顺序。
-
迭代器比“列表”更通用。它甚至不需要有长度 - 如果你愿意,它可以是无限的!
-
"在注释中说明" - 什么?在哪里?哪些笔记?
标签: javascript ecmascript-6 iterator