我正在制作一个小型的类似jQuery的库,有一件令我奇怪的事情是$.each
的行为。是否有jQuery方法遍历对象自己的属性只?
在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不这样做,你也可以回答这是否有用。我的意思是,我看不到自己想要迭代原型属性,但也许我错过了一些东西。
看看这里太http://stackoverflow.com/questions/1827458/prototyping-object-in-javascript-breaks-jquery – mplungjan
找到它是通过使用'hasOwnProperty'的唯一途径。 http://jsfiddle.net/mpTkA/2/ –
在新的浏览器中还有'Object.keys()'。 – Pointy