1、オブジェクト
コンセプトは:オブジェクトは、中括弧{...}と、いくつかのオプションの属性が含まれて作成することができます。プロパティキーと値のペアは、キーがある場合に文字列の値は、任意のタイプであってもよいです。
オブジェクトの作成
1 LET =ユーザー新規新しいオブジェクト(); //コンストラクタ構文 2 LETユーザー= {}; // "リテラル"文法
オブジェクトの属性:
1 LETは= {//ユーザオブジェクトは、 2 名: "ジョン"、//キー"名前"、 "ジョン"の値 3。 年齢:30 // "キー"年齢」、30の値 。4 }; 5 。6は、キー属性コロンの前に「:」コロンの右側にある値
オブジェクトのプロパティを追加および削除
1 user.sex =「男」; //オブジェクトのプロパティの追加 2 [削除user.sexを; //オブジェクトの削除
オブジェクトの角括弧を使用します
1つの //ワープロ複数属性 2 LETユーザー= {}; 3 。4 [ "鳥のような"ユーザがtrueに=; //設定 5。 6。 アラート([ "鳥のような"]ユーザー); // trueに使用 7。 8。ユーザーを削除します[ "鳥のように"]; //削除
計算されたプロパティ
1 //例: 2 フルーツ= "アップル"をさせ; 3。 LET = {バッグ 4。 [果実] :. 5 5。 }; 6。 アラート(bag.apple); 7。 8つの。 //二つの例: 9 せフルーツ= "アップル" ; 10 せバッグ= {}; 11 バッグ[果実] = 5; 12は、 3つの例// 13であり ;せフルーツ= "アップル" 14 せバッグ= { 15 [果実+ "テスト"] :. 5; 16 }; 17 アラート(bag.fruittest)。
短縮形のプロパティ値
次のようにキーと同じ属性値を書き込むことができた場合
ユーザー= {LETの
名前、名前と//名前:同じ名前の
年齢:13です
}
値などの属性が存在することを確認してください
属性を取得することによって、やり方を分析することは、別の方法のキーワードで使用されて存在していない場合は未定義ですが、特別な事情があります。次のように具体的な例としては、以下のとおりです。
1 LET = {ユーザー); 2 。3 アラート(user.isExist == undifined)// trueには、プロパティが存在しないことを示している 4。 5。 ユーザーに警告( "ISEXISTを");偽不在に//属性 。6 7つの。 //特別な事情 8 9 LET {OBJ = 10 試験:未定義 11 } 12は 13である アラート(obj.test ==未定義)// falseに、この属性が存在するので、このようにしていない適切な使用時 14 アラート(OBJの「テスト」) ; // trueがプロパティが存在することを示しています。
...のためのループで
1人の LETユーザー= { 2 名: "ジョン"、 3 年齢:30、 4 isAdmin:真 5 }。 6 7 (ユーザにキーを聞かせて){ための 8つの //キー 9 警告(キー)。//名前、年齢、isAdmin 10 //属性键的值 11 警報(ユーザー[キー]); //ジョン、30、真の 12 }
参照コピー
1 LET = {ユーザー名: 'ジョン'}; 2 3。 LETのADMIN =ユーザー; 4。 5。 admin.name = 'ピート'; // "管理"の基準を変更する 6。 7。 アラート(user.name); //「ピート」、変更はである『ユーザー』のリファレンスから見た 8私たちの引き出しには、2つのキーを持っているキー(管理者)が使用する場合のように、1つのオブジェクトのみが存在を示す例を超える
引き出しを、(後で別のキーを使用しますユーザーが)開いて、変更が表示されます。
参照の比較
1つの それらが等しいとき// 2つの参照が同じオブジェクトを指しています。 2 LETのA = {}; 3 LETのB = A; //参照をコピー 4。 5。 アラート(==のB); //真には、両方の変数が同じオブジェクトを参照する 6。 アラート(B === A); // trueに 7 8 //それは二つの異なる属性がある場合は、たとえ空であっても、同じではありません。 図9 のlet A = {}; 10 LETのB = {}; //二つの別々のオブジェクト 。11 12である falseに; //アラート(== b)は
constオブジェクト
1つの // constが変更されたオブジェクトを変更することが可能です。 2 CONST = {ユーザ 3。 名: "ジョン" 。4 }; 5 。6 user.age = 25; //(*) 。7 。8 アラート(user.age); // 25 。9 //ユーザが、オブジェクト変更することはできません 10 CONSTを= {ユーザー 11 名: "ジョン"が 12である }; 13である 14 //エラー(ユーザ割り当てを割り当てることはできません) 15 ユーザー= { 16 名: "ピート" 。17 }。
オブジェクトの複製とObject.assignをマージ
オブジェクト変数の別のコピーも、このオブジェクトの作成に相当します。
図1は、 元のコードの//操作 2 LET = {ユーザ 3。 :"ジョン"、名前 4 :30歳 5。 ;} 6。 7。 LETクローン= {}; //新しい空のオブジェクト 8。 9。 //すべての属性値をコピー 10 のため(LETユーザキーで){ 11 クローン[キー] =ユーザー[キー]; 12である } 13である 14 今や独立複製コピー// 15 clone.name = "ピート";値変更// 16 。17警告(user.name); //元のオブジェクトのプロパティ値は変更されません
Object.assignを達成するために
構文:オブジェクト.
assign
(
DEST [
,
SRC1の,
SRC2の,
SRC3...
]
)
- パラメータ
dest
とは、src1, ..., srcN
(多くのことができる)オブジェクトです。 - この方法では、複製
src1, ..., srcN
にすべてのオブジェクトをdest
。換言すれば、第2のパラメータから始めて、すべてのオブジェクトの特性は、第1のパラメータオブジェクト、および戻りにコピーされますdest
。1人の LETユーザー= { 2 名: "ジョン"、 3 年齢:30 4 }。 5 6 LETクローン= Object.assign({}、ユーザ);
特別な事情が、オブジェクトがまだオブジェクトであります
1 LET {ユーザー= 2 名: "ジョン"、 3枚の。 サイズ:{ 4。 高さ:182、 5。 幅:50 。6 } 。7 }; 8 。9 LETクローン= Object.assign({}、ユーザー); 10 。11 警告(ユーザ.sizes === clone.sizes); // trueを、同じオブジェクト 12は、 13である //ユーザーサイズ共有オブジェクトとクローン 14 //ここで属性の値を変更する; ++ user.sizes.width 15アラート(clone.sizesを。幅); // 51