Javascript 是否有一种jQuery方式可以只对对象本身的属性进行迭代?
我正在创建一个类似jQuery的小库,有一件事让我感到奇怪,那就是 在javascript中,我们有一个循环: 这样做的问题是,它还将迭代继承的属性,即来自对象构造函数原型的属性 例如,我们可以通过使用来了解这一点。jQuery可以做到这一点 但是,当您将一个对象传递给Javascript 是否有一种jQuery方式可以只对对象本身的属性进行迭代?,javascript,jquery,iteration,for-in-loop,hasownproperty,Javascript,Jquery,Iteration,For In Loop,Hasownproperty,我正在创建一个类似jQuery的小库,有一件事让我感到奇怪,那就是 在javascript中,我们有一个循环: 这样做的问题是,它还将迭代继承的属性,即来自对象构造函数原型的属性 例如,我们可以通过使用来了解这一点。jQuery可以做到这一点 但是,当您将一个对象传递给$时,每个,它的行为与中的…的完全相同,并在继承的属性上进行迭代。它也应该稍微慢一点,并且需要多输入几个字符 检查以查看它的运行情况以及$的源代码。每个 所以我的问题是,jQuery中是否有只包含自己属性的对象迭代方法?如果不是,
$时,每个,它的行为与中的…的完全相同,并在继承的属性上进行迭代。它也应该稍微慢一点,并且需要多输入几个字符
检查以查看它的运行情况以及$的源代码。每个
所以我的问题是,jQuery中是否有只包含自己属性的对象迭代方法?如果不是,库应该这样做吗
编辑:因为jQuery不这样做,所以如果这有用,您也可以回答。我的意思是,我看不出自己想要迭代原型属性,但可能我遗漏了什么。jQuery行为是有意义的,因为您可以选择在循环中添加hasOwnProperty检查,也可以不添加
我可以看出,在某些情况下(克隆、子类或任何您称之为继承的属性)循环使用继承的属性可能很有用。也请看一下这里,找到它的唯一方法是使用hasOwnProperty
。在较新的浏览器中还有Object.keys()
。@Pointy,很高兴知道)可能会更好。快速注意:确保如果在中为-使用本机,在中为键使用var
:for(obj中的var键)
。否则你会得到一个意外的全局。(除非您真的希望键
是全局的,在这种情况下,您可能会找到一种更好的方法来做任何您想做的事情。)其他简要说明:当使用hasOwnProperty
时,保存引用而不是通过点符号调用它可能会稍微安全一些:var has=Object.prototype.hasOwnProperty;has.call({abc:'xyz'},'abc')代码>。“某些场景”部分是我无法理解的部分。你有什么例子吗?(而且,如果必须添加hasOwnProperty
检查,还可以在
中使用for…并保存一些键入内容)。例如:defaultAjaxSettings={type:“GET”,…},然后创建一个克隆,该克隆具有一些特定设置,但其余部分继承自默认设置?我明白了。。。但通常我们会使用类似于$的东西来处理选项映射中的默认值,对吗?或者在某些框架中,更常见的是通过继承这样做?对。。。老实说,我不知道。显然,当您需要将更改传播到默认设置时,您会希望使用继承,但我没有更好的示例。此外,我认为$的兴趣在于提供一个可与各种集合(对象、数组)一起使用的抽象层,在一些场景中,例如模板化,这可能会很有趣。但我也没有一个具体的例子。。。
for (var key in obj) {
console.log(key + ': ' + obj[key]);
}