在 JavaScript 中擷取不可列舉的繼承屬性名稱
在 JavaScript 中,存取物件屬性對於物件操作至關重要。雖然存在多種用於檢索屬性的方法,但它們都專注於特定的屬性類型。這在嘗試存取物件的不可枚舉和非自有屬性時帶來了挑戰。
理解屬性型別
JavaScript 屬性可以分為三種:
挑戰
問題當嘗試擷取物件的不可枚舉、非自有屬性時出現。傳統方法如 Object.keys() 和 for...in 迴圈不會提供這些屬性。
解決方案:遍歷原型鏈
檢索非可枚舉的、非自己的屬性,可以建立一個自訂函數來遍歷物件的原型鏈。此函數利用 Object.getOwnPropertyNames() 來擷取不可列舉的屬性,包括從原型鏈繼承的屬性。
範例函數
function getAllProperties(obj) { var allProps = []; var curr = obj; do { var props = Object.getOwnPropertyNames(curr); props.forEach(function(prop) { if (allProps.indexOf(prop) === -1) { allProps.push(prop); } }); } while ((curr = Object.getPrototypeOf(curr))); return allProps; } console.log(getAllProperties([1, 2, 3]));
輸出:
[ "0", "1", "2", "length" ]
以上是如何在 JavaScript 中檢索不可列舉的繼承屬性名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!