4

我正在制作一个类似 jQuery 的小型库,让我感到奇怪的是$.each.

在 javascript 中,我们有一个for...in循环:

for (var key in obj) {
    console.log(key + ': ' + obj[key]);
}

这样做的问题是,它也会遍历继承的属性,即来自对象构造函数原型的属性。

hasOwnProperty例如,使用 可以知道这一点。而 jQuery可以做到这一点。

但是,当您将对象传递给 时$.each,它的行为与 a完全一样for...in,也会迭代继承的属性。它也应该稍微慢一些,并且需要输入更多字符。

检查此小提琴以查看它的实际效果并在此处查找$.each.

所以我的问题是,jQuery 中是否有只包含自己属性的对象迭代方法?如果不是,图书馆应该像这样吗?

编辑:由于 jQuery 不这样做,你也可以回答这是否有用。我的意思是,我看不到自己想要迭代原型属性,但也许我错过了一些东西。

4

1 回答 1

1

jQuery 行为是有意义的,因为您始终可以选择在循环中添加 hasOwnProperty 检查 - 或不添加。

我可以看到循环继承的属性在某些情况下(克隆或子类或任何你称之为的)可能很有用。

于 2012-12-03T17:35:20.083 回答