JavaScript での列挙不可能な継承プロパティ名の取得
JavaScript では、オブジェクトのプロパティへのアクセスはオブジェクトの操作に不可欠です。プロパティを取得するにはさまざまな方法が存在しますが、それぞれが特定のプロパティ タイプに焦点を当てています。これにより、オブジェクトの列挙不可能なプロパティや独自のプロパティにアクセスしようとするときに問題が発生します。
プロパティのタイプについて
JavaScript のプロパティは、次の 3 つのタイプに分類できます。
課題
問題は、列挙不可能なものを取得しようとすると発生します。オブジェクトの非所有プロパティ。 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 中国語 Web サイトの他の関連記事を参照してください。