遍历属性的设置

为何原型链上的属性你使用for in 无法循环出来?

Object.getOwnPropertyDescriptor(Object.prototype,”valueOf”);

  1. {writable: true, enumerable: false, configurable: true, value: ƒ}
    1. configurable: true
    2. enumerable: false
    3. value: ƒ valueOf()
    4. writable: true
    5. [[Prototype]]: Object

可以看见enumerable是false,也就是不允许出现在for in遍历中。

ok,那么我们修改一下

Object.defineProperty(Object.prototype,"valueOf",{enumerable:true})

for(let key in {}){console.log(key)}
结果:
VM265:1 valueOf

所以我们可以通过这个方法来控制遍历允许显示的变量。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部