[英]Is there a jQuery way of iterating over an objects own properties only?
我正在制作一個類似jQuery的小型庫,有一件事讓我感到奇怪的是$.each
的行為。
在javascript中我們有一個for...in
循環:
for (var key in obj) {
console.log(key + ': ' + obj[key]);
}
這個問題是,它將迭代繼承的屬性,即來自對象構造函數原型的屬性。
例如,可以使用hasOwnProperty
來了解這一點。 而jQuery 可以做到這一點。
但是,當您將對象傳遞給$.each
,它的行為與for...in
完全相同 ,也會迭代繼承的屬性。 它也應該稍微慢一些,並且需要輸入更多的字符。
檢查這個小提琴 ,看看它的實際效果,並在這里查看$.each
的源代碼。
所以我的問題是,jQuery中是否有一個只包含自己屬性的對象迭代方法? 如果沒有,庫應該像這樣嗎?
編輯:由於jQuery不這樣做,你也可以回答這是否有用。 我的意思是,我看不到自己想要迭代原型屬性,但也許我錯過了一些東西。
jQuery行為是有道理的,因為你總是可以選擇在循環中添加hasOwnProperty檢查 - 或者不是。
我可以看到循環繼承屬性在某些場景中可能很有用(克隆或子類或任何你稱之為的東西)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.