iterator封装到Object.prototype
时间: 2023-06-18 17:07:53 浏览: 49
封装 iterator 到 Object.prototype 可以让所有的对象都可以使用 iterator 方法。但是需要注意的是,这样做可能会影响到其他库或者代码的正常使用,因为这个方法会被所有的对象实例继承。所以,在封装到 Object.prototype 上之前,需要仔细考虑这种做法的影响。
以下是一个简单的示例:
```javascript
Object.prototype[Symbol.iterator] = function() {
let index = 0;
let values = Object.values(this);
return {
next: function() {
if (index < values.length) {
return { value: values[index++], done: false };
} else {
return { done: true };
}
}
};
};
let obj = { a: 1, b: 2, c: 3 };
for (let value of obj) {
console.log(value);
}
// 输出:1 2 3
```
上面的代码在 Object.prototype 上添加了一个 iterator 方法,这样所有的对象都可以使用 for...of 循环来遍历它们的属性。在这个例子中,我们遍历了一个拥有三个属性的对象,并且输出了每个属性的值。
需要注意的是,这种做法可能会与其他库或者代码产生冲突,因为这个方法会被所有的对象实例继承。所以,在封装到 Object.prototype 上之前,需要仔细考虑这种做法的影响。