复现
// 扩大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 () {
...
}
}
})
发表回复