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

7次阅读

共计 318 个字符,预计需要花费 1 分钟才能阅读完成。

复现

// 扩大 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 () {...}
    }
})

正文完
 0