复现
// 扩展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 () {
...
}
}
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。