gpt4 book ai didi

Javascript 扩展原型(prototype)和 for-in

转载 作者:行者123 更新时间:2023-11-30 10:24:57 26 4
gpt4 key购买 nike

我尝试向我经常使用的 Array 原型(prototype)添加一些新函数。我的问题是,当我向对象的原型(prototype)添加一些内容,并在我创建的任何新数组(对象)的 for-in 循环中追踪属性时,那些仅添加到原型(prototype)的新函数也会被列出?他们不应该只是在 proto 中吗?

举个例子:所以我在原型(prototype)中添加了一个“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 迭代对象的结果吗?

最佳答案

埃文是正确的。但是,在 javascript 中使用 for..in 语句时,最好始终测试当前属性是对象的属性,而不是从原型(prototype)链继承的东西:

for(var attr in obj){
if(obj.hasOwnProperty(attr)){
// first will not appear here
}
}

关于Javascript 扩展原型(prototype)和 for-in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20059846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com