在 JavaScript 中取得物件的不可枚舉繼承屬性名稱
JavaScript 根據特定需求提供了多種存取物件屬性的方法。然而,這些方法都不允許檢索不可列舉的、非自己的屬性。本文探討了提取此類屬性的替代方法。
解決方案:利用 getOwnPropertyNames 和原型鏈
由於 Object.getOwnPropertyNames() 可以檢索不可枚舉屬性,因此它可以與原型鏈遍歷結合。以下 JavaScript 函數 getAllProperties() 迭代物件的原型鏈並編譯其所有不可枚舉、非自有屬性的列表:
function getAllProperties(obj){<pre class="brush:php;toolbar:false">var allProps = [] , 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
}
範例用法
要示範 getAllProperties()函數的功能,請考慮以下數組物件:
console.log(getAllProperties([1,2,3]));
輸出:
[ 'length' ]
輸出列出了屬於 Array.prototype 鏈的不可枚舉屬性 'length'。
以上是如何在 JavaScript 中檢索不可列舉的繼承屬性名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!