let hobby = Symbol('hobby')
let object = {
id: 1,
name: 'tom',
age: 20,
[hobby]: [1, 2, 3],
[Symbol()]: ['1', '2', '3'],
[Symbol()]: ['5', '4', '6'],
}
// 给Object原型对象部署Symbol.iterator属性,使对象也可以使用for-of
Object.prototype[Symbol.iterator] = function () {
// 获得所有对象的属性集合keys,keys每个元素都是object的属性名称,this是当前函数的调用者
let keys = Reflect.ownKeys(this)
// keys数组的下标
let index = 0
let _this = this
return {
next() {
return {
value: _this[keys[index++]],
//{ key: keys[index], value: _this[keys[index++]] }
done: index > keys.length,
}
},
}
}
for (let it of object) {
console.log(it)
}
输出的结果:
1
tom
20
[1, 2, 3]
['1', '2', '3']
['5', '4', '6']
ES6给对象部署Iterator
最新推荐文章于 2024-06-04 15:01:33 发布