Object.getOwnPropertyNames と Object.keys 質問する

Object.getOwnPropertyNames と Object.keys 質問する

Object.getOwnPropertyNamesJavaScript のとの違いは何ですかObject.keys? また、いくつかの例も教えていただけるとありがたいです。

ベストアンサー1

少し違いがあります。オブジェクトのすべてのObject.getOwnPropertyNames(a)独自プロパティを返します。列挙可能なすべての独自プロパティを返します。つまり、オブジェクト プロパティの一部を作成せずに定義した場合、これら 2 つの方法では同じ結果が得られます。aObject.keys(a)enumerable: false

テストは簡単です:

var a = {};
Object.defineProperties(a, {
    one: {enumerable: true, value: 1},
    two: {enumerable: false, value: 2},
});
Object.keys(a); // ["one"]
Object.getOwnPropertyNames(a); // ["one", "two"]

プロパティ属性記述子を指定せずにプロパティを定義する場合(つまり、 を使用しない場合Object.defineProperties)、例:

a.test = 21;

そのようなプロパティは自動的に列挙可能になり、両方のメソッドの返される配列に表示されます。

おすすめ記事