我尝试向我经常使用的 Array 原型添加一些新功能。我的问题是,当我向对象的原型添加一些东西,并在我创建的任何新数组(对象)的 for-in 循环中追踪属性时,那些仅添加到原型的新函数也被列出? 他们不应该只是在proto中吗?
举个例子: 所以我在原型中添加了一个“first”的功能。
Array.prototype.first = function() { return this[0]; }
因此,当我现在使用 for-in 循环遍历数组时,我得到了命名函数,以及数组中的任何其他项。
var array = [1,2,3];
//traces out: 1,3,4,first
for(var i in array) {
console.log(i);
}
这仅仅是由于跟踪和/或使用 for-in 来迭代对象吗?