为何原型链上的属性你使用for in 无法循环出来?
Object.getOwnPropertyDescriptor(Object.prototype,”valueOf”);
- {writable: true, enumerable: false, configurable: true, value: ƒ}
- configurable: true
- enumerable: false
- value: ƒ valueOf()
- writable: true
- [[Prototype]]: Object
可以看见enumerable是false,也就是不允许出现在for in遍历中。
ok,那么我们修改一下
Object.defineProperty(Object.prototype,"valueOf",{enumerable:true})
for(let key in {}){console.log(key)}
结果:
VM265:1 valueOf
所以我们可以通过这个方法来控制遍历允许显示的变量。