JavaScriptでは、ドット演算子を介してオブジェクトのプロパティを読み書きできます。またはブラケットオペレーター "[]":
コードコピーは次のとおりです。
var o = {x:1、y:2};
console.log(ox); // 1
console.log(o ["y"]); // 2
oy = 7;
console.log(o ["y"]); // 7
ブラケットオペレーターを使用している場合、演算子の値タイプは文字列、または文字列に変換できる式でなければならないことに注意してください。
コードコピーは次のとおりです。
console.log(o [y]); // referenceError:yは定義されていません
var v = "y";
console.log(o [v]); // 7
Java言語とは異なり、JavaScriptのオブジェクトのプロパティを動的に追加または削除できます。プロパティを割り当てるとき、プロパティが存在しない場合、JavaScriptはこのプロパティをオブジェクトに動的に追加します。
コードコピーは次のとおりです。
oz = 99;
console.log(o); // object {x = 1、y = 7、z = 99}
プロトタイプ継承チェーンの財産の読み取り
JavaScript内のすべてのオブジェクトには、プロトタイププロトタイプオブジェクトがあり、プロトタイプオブジェクトからプロパティを継承します。したがって、JSのオブジェクトのプロパティは、2つのカテゴリに分割されます。
1。オブジェクト自体が所有するプロパティ(「独自の財産」)。
2。プロトタイプオブジェクトから継承されたプロパティ。
オブジェクトのプロパティを読むとき、続くルールは次のとおりです。
1。オブジェクトの独自のプロパティコレクション(「独自のプロパティ」)から読む必要があるプロパティを検索します。検索できる場合、プロパティを直接読み取り、その価値を返します。
2.オブジェクトのプロパティコレクション(「独自のプロパティ」)からプロパティを検索できない場合は、プロパティが検索され、その値が返されるまで、オブジェクトのプロトタイププロトタイプチェーンから検索し続けます。
3.オブジェクトのプロパティコレクション(「独自のプロパティ」)でプロパティを検索できず、プロパティをすべてのオブジェクトのプロトタイプオブジェクトで検索できない場合、未定義は返されます。
プロトタイプ継承チェーンにプロパティを作成します
JavaScriptオブジェクトのプロパティに書き込むとき、次のルールは次のとおりです。
1.オブジェクト自体がプロパティを持っていて、プロパティが執筆可能な場合は、プロパティに新しい値を書き込みます。プロパティが読み取り専用の場合、エラーが報告されます。
2.オブジェクト自体にプロパティがなく、すべてのプロトタイプオブジェクトに存在しない場合は、このプロパティをオブジェクトに追加します。
3.オブジェクト自体にプロパティがないが、プロパティがそのプロトタイプオブジェクトに存在し、書き込み可能な場合、JSはこのプロパティをオブジェクトに作成します。つまり、オブジェクトはプロトタイプオブジェクトのプロパティをオーバーライドします。プロトタイプオブジェクトのこのプロパティ値は変更されていません。
4.オブジェクト自体にプロパティがないが、プロパティがプロトタイプオブジェクトに存在し、読み取り専用である場合、エラーが報告されます。
5.オブジェクト自体にプロパティがないが、プロパティのセッターメソッドがそのプロトタイプオブジェクトに存在する場合、JSはプロトタイプオブジェクトのセッターメソッドを呼び出します。 Setterメソッドを実行する場合、可変割り当てが含まれている場合、割り当て操作はオブジェクト自体に作用し、プロトタイプオブジェクトが変更されないことに注意してください。この動作については、次のように理解できます。オブジェクトは、プロトタイプからセッター関数を継承し、実行します。
上記のルールから、プロパティへの割り当て操作が成功した場合、オブジェクト自体が常に最終的に変更され、そのプロトタイププロトタイプオブジェクトが変更されないことがわかります。