我正在製作一個小型的類似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