关于javascript:扩展Array原型方法后使用forin语句遍历Array实例时遍历项出现扩展的原型方法

复现

// 扩大Array原型
Array.prototype.pip = function(){
    ...
}
// 创立数组实例
var arr = [];
// 应用for...in语句遍历实例
for(let index in arr){
    console.log(index);
}
// 数组实例中并无数据项,但遍历时会将原型办法pip遍历进去

起因

间接通过Array.prototype.pip的办法扩大原型办法,会默认pip办法为可枚举属性,所以会被for...in语句辨认并遍历。

解决

Object.defineProperties(Array.prototype, {
    pip: {
      enumerable: false, // 不可枚举
      value: function () {
        ...
      }
    }
})

评论

发表回复

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

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理