【发布时间】:2018-08-10 10:56:15
【问题描述】:
鉴于 ES6 中新的“符号”原语,是否可以修改/设置对象中 for...of 循环的行为?
我正在创建一个小实用程序,用于从“可迭代”(出于我的目的将其定义为对象、数组、映射或集合)中的“深度提取”值。
Array、Map 和 Set 使用 for..of 循环,但普通对象不使用。为了保持一致性,我希望对象使用这个循环(并且应该迭代值而不是属性(因为 for...in 允许你这样做))。
这个可以吗?
【问题讨论】:
-
Given the new 'Symbol' primitive in ES6, is it possible to modify/set the behavior of a for...of loop in an object?两者有什么关系?我迷路了 -
@JaromandaX
Symbol扩展了元编程的能力,我认为这可能是解决这个问题的关键(例如通过修改 Symbol.iterator) -
符号不能被修改 - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - 哦,等等,我想我理解你所说的修改 Symbol.iterator 的意思......
-
是的,我应该更准确。通过“修改
Symbol.iterator”,我的意思是修改绑定到对象上此属性的生成器函数(例如,可以在此处看到:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…)
标签: javascript ecmascript-6 for-of-loop