首頁 >web前端 >js教程 >如何在 JavaScript 中檢索不可列舉的繼承屬性名稱?

如何在 JavaScript 中檢索不可列舉的繼承屬性名稱?

Susan Sarandon
Susan Sarandon原創
2024-11-09 07:57:02835瀏覽

How to Retrieve Non-Enumerable Inherited Property Names in JavaScript?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn