在給定的程式碼片段中,for-in 循環迭代物件 obj 的屬性。每個屬性的名稱都會指派給變數 propt,其值透過 obj[propt] 存取。
但是,需要注意的一個關鍵細節是 propt 不是物件內建的方法或屬性。相反,它只是一個在循環迭代期間採用每個屬性名稱的變數。
使用for-in 循環迭代物件屬性需要額外的安全性檢查:Object.prototype.hasOwnProperty.call(obj, prop).
此檢查是必要的,因為JavaScript 中的物件從其基底類別原型繼承屬性。因此,一個物件可能擁有它沒有明確定義但從基底類別繼承的屬性。
為了避免在循環中包含繼承的屬性,hasOwnProperty 會檢查確定特定屬性是否專門屬於該物件。正在迭代的物件而不是繼承的原型。
而不是使用Object.prototype.hasOwnProperty.call(obj, prop),也可以直接在物件本身上呼叫hasOwnProperty:
if (obj.hasOwnProperty(prop)) { // Do stuff }
以上是如何在 JavaScript 中安全地迭代物件屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!