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