JavaScript でのオブジェクトの列挙不可能な継承プロパティ名の取得
JavaScript には、特定の要件に基づいてオブジェクトのプロパティにアクセスするためのさまざまなメソッドが用意されています。ただし、これらのメソッドはどれも、列挙不可能で所有されていないプロパティを取得することはできません。この記事では、そのようなプロパティを抽出する別のアプローチについて説明します。
解決策: getOwnPropertyNames とプロトタイプ チェーンの活用
Object.getOwnPropertyNames() は列挙不可能なプロパティを取得できるため、プロトタイプチェーントラバーサルと組み合わせることができます。次の JavaScript 関数 getAllProperties() は、オブジェクトのプロトタイプ チェーンを反復処理し、列挙不可能で所有されていないすべてのプロパティのリストをコンパイルします。
function getAllProperties(obj){</p><div class="code" style="position:relative; padding:0px; margin:0px;"><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 サイトの他の関連記事を参照してください。