微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 是否有一种jQuery方式只迭代对象自己的属性?

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

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

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

这个问题是,它将迭代继承的属性,即来自对象构造函数原型的属性.

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

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

检查this fiddle以查看其运行情况,并查看look here获取$.each的源代码.

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

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

解决方法:

jQuery行为是有道理的,因为你总是可以选择在循环中添加hasOwnProperty检查 – 或者不是.

我可以看到循环继承属性在某些场景中可能很有用(克隆或子类或任何你称之为的东西).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐