1. ホーム
  2. ジャバスクリプト

[解決済み】Object.getOwnPropertyNamesとObject.keysの違いについて

2022-04-01 01:25:58

質問

とはどう違うのですか? Object.getOwnPropertyNamesObject.keys をjavascriptで表示できますか? また、いくつかの例もお願いします。

どのように解決するのですか?

少し違いますね。 Object.getOwnPropertyNames(a) リターン すべて オブジェクトのプロパティを所有する a . Object.keys(a) リターン すべての列挙可能な を自分のプロパティにすることができます。つまり、オブジェクトのプロパティを定義する際に、その一部を enumerable: false この2つの方法は、同じ結果をもたらします。

テストがしやすいですね。

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;

とすると、そのプロパティは自動的に列挙可能なものとなり、どちらのメソッドも同じ配列を生成します。