很多时候,我个人感觉开发过程中一味的使用for in 遍历对象不太方便,使用for of就比较轻松,但是好巧不巧对象没有部署迭代器,这就很烦了。。好在ES6是可以让我们自定义迭代器的,于是我们可以在对象上部署一个迭代器,这个迭代器的功能完全由开发者决定,不一定非要暴力枚举对象上的每个键值对,开发过程中按照实际需求来。
在这里简单实现一个for of枚举对象的值
'use strict'
//迭代器
const obj={
name:"chn",
age:18,
arr:[1,2,3,4],
sex:"男",
[Symbol.iterator](){
let index=0;
const keys=Object.getOwnPropertyNames(this);
return {
next() {
const _this=Object.assign(obj);
return index < _this.arr.length ? { value:_this[keys[index++]],
done: false } : { value: undefined, done: true };
}
}
}
};
for(const value of obj){
console.log(value);
//chn
// 18
// [1, 2, 3, 4]
// 男
}
本文介绍了如何在JavaScript中使用ES6的自定义迭代器为对象提供枚举功能,特别是在对象没有内置迭代器的情况下。通过示例展示了如何创建一个迭代器,只遍历对象的特定属性值,如`name`、`age`、`arr`和`sex`,而不是全部键值对。这种方式提高了代码的灵活性和可定制性。
2414

被折叠的 条评论
为什么被折叠?



