簡體   English   中英

是否有一種jQuery方法只迭代對象自己的屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM