ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で列挙不可能な継承プロパティ名を取得する方法

JavaScript で列挙不可能な継承プロパティ名を取得する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-09 07:57:02883ブラウズ

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

JavaScript でのオブジェクトの列挙不可能な継承プロパティ名の取得

JavaScript には、特定の要件に基づいてオブジェクトのプロパティにアクセスするためのさまざまなメソッドが用意されています。ただし、これらのメソッドはどれも、列挙不可能で所有されていないプロパティを取得することはできません。この記事では、そのようなプロパティを抽出する別のアプローチについて説明します。

解決策: getOwnPropertyNames とプロトタイプ チェーンの活用

Object.getOwnPropertyNames() は列挙不可能なプロパティを取得できるため、プロトタイプチェーントラバーサルと組み合わせることができます。次の JavaScript 関数 getAllProperties() は、オブジェクトのプロトタイプ チェーンを反復処理し、列挙不可能で所有されていないすべてのプロパティのリストをコンパイルします。

function getAllProperties(obj){</p><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() 関数の機能をデモンストレーションするには、次の配列を考えてみましょうobject:

console.log(getAllProperties([1,2,3]));

出力:

[ 'length' ]

出力には、Array.prototype チェーンに属する非列挙プロパティ 'length' がリストされます。

以上がJavaScript で列挙不可能な継承プロパティ名を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。