ES6は簡潔な構文オブジェクト

オブジェクト(オブジェクト)は、最も重要なJavaScriptのデータ構造です。ES6は、この章では、データ構造自体は、文法やアプリケーションの詳細を変更について説明し、大規模なアップグレードを行いました。

1.単純属性表記
◆ES6は、変数と関数、プロパティおよびオブジェクトのメソッドに直接書き込むことができました。このようなより簡潔な書き込み。
FOO = CONST 'バー';
constのバズのFOO = {};
バズ{// fooの"バー"}
に相当//
CONSTバズ= {FOO:FOO} 。

◆ES6は対象に、変数に直接書き込みができました。この場合、変数名は、変数の値名、属性値を属性。
F関数(X、Y){
リターン{X、Y};
}
に相当//
関数F(X、Y){
リターン{X:X、Y:Y};
}
F(1、2){//オブジェクトX:1、Y:2}

◆特性速記方法に加えて、省略することができます。
O = {CONST
法(){
リターン"こんにちは!";
}
};
//等価
CONST = {O
方法:関数(){
リターン"!こんにちは";
}
}。

以下のような:
LET誕生= '2000/01/01';
constの= {人物
名: 'ジョン・ドウ'、
誕生、//同等の誕生:誕生[重要]
こんにちは(){はconsole.log( '私の名前は' 、this.name);} //同等こんにちは:機能()...
};

関数の戻り値に使用する文言は非常に便利です。
getPoint関数(){
CONST = X. 1;
constのY = 10;
リターン{X、Y};
}
getPoint(){// X :. 1、Y:10}

◆CommonJSモジュールは、単純な文言を使用することは非常に適切である、変数のセットを出力
MS = {}せ;
のgetItem(キー)機能{
MS MSにおけるリターンキー[キー] :?ヌル;
}
SetItem関数(キー、値){機能
MS [キー] =値;
}
関数クリア(){
MS = {};
}
module.exportsは= {のgetItem、SetItem関数、クリア};
//等価
module.exportsは= {
のgetItem:のgetItem、
SetItem関数:SetItem関数、
クリアクリア
}。

◆属性名の簡単な言い回しは、常にいくつかは、かなり奇妙な結果に見えるにつながることができ、文字列、あることに注意してください。
{OBJ = CONST
クラス(){}
};
//等価
VAR OBJ = {
'クラス':関数(){}
}。

2.プロパティ名の式
はJavaScript定義されたオブジェクトのプロパティ、2つの方法があります。
@方法
obj.foo = trueに;
//方法二
OBJ [「」+「BC
第2の方法は、発現プロパティ名を使用することであるように、第1の方法として、識別子を有する上記のコードは、直接プロパティ名、あなたは角括弧内の式をしたいです。
オブジェクトがリテラルモード(中括弧)を使用して定義されている場合は、この方法は、ES5プロパティで定義のみ(識別子)を使用します。
OBJ = {VARの
FOO:trueに、
ABC:123
};
ES6ためリテラルオブジェクトは、オブジェクトのプロパティ名、角括弧内の式、すなわちように、2つの方法(式)によって定義されることができます。
= propKey LET 'FOO';
LET OBJ = {
[propKey]、真の
[ '' + 'BC']:123
}。

ここでは別の例です。
lastWordは=「最後の単語」ましょう。

const A = {
'最初の単語': 'こんにちは'、
[lastWord]: '世界'
};
[ '最初の単語'] // "hello"を
[lastWord] // "世界"
[ '最後の言葉'] // "世界"

◆式もメソッド名を定義するために使用することができます。
{OBJ =せ
[ 'H' + 'ello'](){
リターン'ハイ';
}
};
obj.hello()//こんにちは
注、発現は、名称と簡単な表現属性は使用できない、説明します。
//所与
CONSTのfoo = 'バー';
CONSTバー= 'ABC';
CONSTバズ= {[FOO]};
//正しい
CONSTのfoo = 'バー';
CONSTバズ= {[FOO]: 'ABC'};
注、プロパティ名の式がオブジェクトで、デフォルトのオブジェクトによって自動的に文字列に変換されている場合は、[オブジェクトのオブジェクト]、これは特に注意する必要があります。

3. name属性のメソッド
name属性の関数は、関数名を返します。メソッドは、オブジェクトの関数であり、したがって、name属性を持っています。
人= {CONST
sayName(){
にconsole.log( 'こんにちは!');
}
};
person.sayName.name // "sayName"
コード上、name属性の方法は、関数(すなわち、メソッド名)の名前を返します。

4.拡張演算子オブジェクト
A.の非構造割当
オブジェクトに割り当てられた値から解体オブジェクトは、ターゲット・トラバース(列挙)が、プロパティ自体に対応するすべてのオブジェクトは、指定に、読み出されていません上記の目的。すべてのキーとその値は、上記の新しいオブジェクトにコピーされます。
X {LET、Y、Z ...} = {X :. 1、Y 2、:. 3、B :. 4};
。X // 1つの
Y 2 //
Z // {:. 3、B:} 4。
分析:変数zが割り当てられているオブジェクトの解体が配置されています。これは、等号の右側にあるすべてのキーを取得します(AとB)読まれていない、彼らは値とともに一緒にコピーされます。
注:
1.割り当ては等号の右側を解体することを目的とするので、右側が未定義またはnullである場合、それらがオブジェクトに変換することができないので、エラーであろうが必要です。
= NULL {Z} ...せ; //実行時エラー
LET {...} Z =不定;実行時エラー

2.非構造割当てがそれ以外の場合はエラーが、最後のパラメータでなければならない
せ、{...、X、Y、Z } = SomeObjectの; // 構文エラー
せ{X、Y ...、... 、Z} = SomeObjectの; // 構文エラー

B.は拡張オペレータが
現在のオブジェクトにコピーし、オブジェクトの属性の両方を介して抽出されたすべてのパラメータの演算子オブジェクト(...)を拡張しました。
Z = A {:. 3、Bせ:} 4;
LET N-Z = {...};
N-A // {:3、B:} 4。

アレイは特別な目的であるため、加工対象物は、また、配列オペレータに拡張することができます。
FOO = {... LET [ 'A'、 'B'、 'C']};
FOO // {0: "A" ,. 1: "B"、2: "C"}

オペレータは、空のオブジェクトの後ろに延長された場合、影響はありません。
{... {}、1 } // {1}

オペレータは、オブジェクトの後ろに拡張されていない場合は、自動的にオブジェクトに変換されます。
{// ...オブジェクト(1)}に相当する
{1} ...
後拡張演算子// {}は1の整数であり、自動的にラップされたオブジェクト番号値{1}に切り替えます。オブジェクトがプロパティを所有していないので、それはヌルオブジェクトを返します

5新しい文法オブジェクト
01 Object.isは
2つの値を比較するために使用される厳密な比較演算子(===)の動作と一致し、正確に等しいです。
真//へ== 123 "123"
// falseに123 === "123"
はfalse //にはconsole.log(Object.is(123、 "123"))

02オブジェクト。ASSIGN
Object.assignオブジェクトをマージする
//新しいオブジェクト= Object.assign(ターゲットオブジェクト、ソース1、srouce2 ....)しましょう
。03オブジェクトのキー/値/エントリそれ
`)` Object.keys(:そのキー名のすべての属性を列挙するオブジェクトを返します。
Object.values() `:その値のすべての属性列挙するオブジェクトを返し
、オブジェクト自体を返します:.オブジェクトのエントリは()`すべての名前を列挙することができますの値

おすすめ

転載: www.cnblogs.com/jxjy/p/11764982.html