Javascript For循环默认迭代器函数的

Javascript For循环默认迭代器函数的,javascript,iterator,prototype,generator,for-of-loop,Javascript,Iterator,Prototype,Generator,For Of Loop,考虑在对象上定义的这个简单生成器函数。prototype: Object.prototype.defineProperty(Object.prototype,'pairs'{ 可枚举:false, *值(){ for(此字段中的常量键) 让出[钥匙,这[钥匙]; } }); 当然,它可以这样使用: const object={gongs\u teleported:42}; for(object.pairs()的常量[key,value]); 但是我想知道是否有任何方法可以将pairs函数分配

考虑在
对象上定义的这个简单生成器函数。prototype

Object.prototype.defineProperty(Object.prototype,'pairs'{
可枚举:false,
*值(){
for(此字段中的常量键)
让出[钥匙,这[钥匙];
} });
当然,它可以这样使用:

const object={gongs\u teleported:42};
for(object.pairs()的常量[key,value]);
但是我想知道是否有任何方法可以将
pairs
函数分配给对象原型,因此它将在
for of
循环中自动启动,而无需显式调用;就这样,

用于(对象的常量[键,值]);
有什么想法吗

   Object.prototoype[Symbol.iterator] = function* pairs() {
     //...
   };

但请注意,这可能会在任何地方造成副作用。这不应该在生产中使用(或者至少,您自己承担风险)。

将生成器置于
对象上。原型[Symbol.iterator]

Object.prototype[Symbol.iterator]=函数*pairs(){
对于(此中的常量键)屈服[键,此[键];
};
const object={gongs_teleported:42,foo:'fooval'};
for(对象的常数[k,v]{
控制台日志(k,v);

}
在ES6中,您可以使用
Symbol.iterator
为原型定义自定义迭代器。
请参见

我想迭代器不能用
对象定义。defineProperty
,是吗?我不这么认为,尽管您可以使用