この記事は、ES6 オブジェクトの拡張と新しいメソッドの概要を示しています (例付き)。必要な方は参考にしていただければ幸いです。
1. 属性の簡潔な表現
ES6 では、変数や関数をオブジェクトのプロパティやメソッドとして直接記述することができます。この種の書き方はより簡潔です。
1 2 3 4 5 6 |
|
上記のコードは、ES6 では変数をオブジェクトに直接書き込むことができることを示しています。このとき、属性名は変数名、属性値は変数の値となります。別の例を示します。
1 2 3 4 5 6 7 8 |
|
属性の省略形に加えて、メソッドも省略形にすることができます。
1 2 3 4 5 6 7 8 9 10 11 |
|
以下は実際的な例です。
1 2 3 4 5 6 7 8 9 10 |
|
この書き方は関数の戻り値に非常に便利です。
1 2 3 4 5 6 |
|
CommonJS モジュールは一連の変数を出力します。これは簡潔な記述に非常に適しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
属性の割り当て (setter) と値の取得 (getter) は、実際にはこのように記述されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
2. プロパティ名の式
JavaScript でオブジェクトのプロパティを定義するには 2 つの方法があります。
1 2 3 4 |
|
上記のコードの最初の方法は、識別子を属性名として直接使用することであり、2 つ目の方法は、式を属性名として使用することです。この場合、式を角かっこで囲みます。
ただし、リテラルを使用してオブジェクトを定義する場合 (中括弧を使用)、ES5 でプロパティを定義するのに使用できるのはメソッド 1 (識別子) のみです。
1 2 3 4 |
|
ES6 でオブジェクトのリテラル定義が許可されている場合は、オブジェクトのプロパティ名としてメソッド 2 を使用します。つまり、式をかっこで囲みます。
1 2 3 4 5 |
|
ここに別の例があります:
1 2 3 4 5 6 7 8 |
|
式はメソッド名の定義にも使用できます。
1 2 3 4 5 6 |
|
注:
1 2 |
|
1 2 3 4 5 6 7 |
|
上記のコードでは、[keyA] と [keyB] は [object object] を取得するため、[keyB] は [keyA] を上書きし、myObject は 1 つだけです最後に[object object]属性。
メソッドの name 属性
関数の name 属性は関数名を返します。オブジェクト メソッドも関数であるため、name 属性もあります。
1 2 3 4 5 6 7 |
|
属性の列挙可能な型と走査
オブジェクトの各属性には、属性の変更動作を制御するために使用される説明オブジェクトがあります。 Object.getOwnPropertyDescriptor(obj,'foo') メソッドは、プロパティの説明オブジェクトを取得できます。
列挙可能性と呼ばれるオブジェクトの列挙可能な属性を記述します。この属性が false の場合、一部の操作が現在の属性を無視することを意味します。
現在、列挙可能値が false の属性を無視する操作が 4 つあります。
1 2 3 4 |
|
ES6 には、オブジェクトのプロパティを走査するためのメソッドが合計 5 つあります。
(1)for...in
1 |
|
(2)Object.keys(obj)
1 |
|
(3)Object.getOwnPropertyNames(obj)
1 |
|
(4) Object.getOwnPropertySymbols(obj)
1 |
|
(5) Reflect.ownKeys(obj)
1 |
|
このキーワードは常に For the関数が配置されている現在のオブジェクトに加えて、ES6 では別の同様のキーワード super が追加されており、これは現在のオブジェクトのプロトタイプ オブジェクトを指します。
1 2 3 4 5 6 7 8 9 10 11 |
|
上記のコードでは、オブジェクト obj.find() メソッドで、プロトタイプ オブジェクト proto の foo 属性が super.foo を通じて参照されます。
注: super キーワードがプロトタイプ オブジェクトを表す場合、そのオブジェクトのメソッド内でのみ使用できます。他の場所で使用すると、エラーが報告されます。現在、JavaScript エンジンはオブジェクト メソッドの省略形のみで、オブジェクト メソッドが定義されていることを確認できます。
JavaScript エンジンの内部では、super.foo は Object.getPrototypeOf(this).foo または Object.getPrototypeOf(this).foo.call(this) と同等です。
分割代入
オブジェクトの分割代入は、オブジェクトから値を取得するために使用されます。これは、オブジェクトのすべての走査可能だがまだ読み取られていない部分と同等です。ターゲット オブジェクト自体に属性が割り当てられます。すべてのキーとその値が新しいオブジェクトにコピーされます。
1 2 3 4 |
|
上記のコードでは、変数 z は、分割代入が配置されているオブジェクトです。等号の右側にあるすべての未読キー (a および b) を取得し、それらの値とともにコピーします。
以上がES6 オブジェクトの拡張機能と新しいメソッドの概要 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。