1

JavaScript の継承と Angular Scopes に関するこの記事を読んだところです: https://github.com/angular/angular.js/wiki/Understanding-Scopes

彼らは次のようなコードを参照しています。

次に、これを行うとします。

childScope.aString = 'child string'

そして、次のようにフォローアップします。

次に、これを行うとします。

childScope.anArray[1] = '22'
childScope.anObject.property1 = 'child prop1'

親に見つからないため、最初のスコープが子スコープに追加されます。ただし、秒は親にあるため、子には追加されません。

私が理解できないのは、aStringが親スコープにも表示されるということです。この場合、「プロトタイプチェーンが参照されない」のはどうしてですか? すべての例で親を参照できるように思われます。

4

3 に答える 3

3

プロパティを設定するとき、プロトタイプ チェーンは参照されません。

オブジェクトの例では、スコープ (または) のプロパティを取得し、返されたオブジェクトのプロパティを設定しています。anObjectAnArray

于 2013-06-17T18:30:20.530 に答える
1

などのAngularスコープから値を取得するときchildScope.aString、そのスコープに直接含まれていない場合、親スコープが参照されます。ただし、子スコープのプロパティに直接割り当てる場合、親スコープは参照されませんchildScope.x = y

の場合childScope.anArray[1] = '22'、子スコープのプロパティに直接割り当てていません。子スコープを介して、親スコープから取得したオブジェクトのプロパティ/インデックスに割り当てています。この行を 2 行に分割して、何が起こっているのかを明確にすることができます。

var array = childScope.anArray;
array[1] = '22';

最初の行は、オブジェクトを取得anArrayしようとしていて、 で見つからないため、親スコープを調べますchildScope。ただし、 index に値を割り当てる場合[1]、子スコープのプロパティを割り当てるのではなく、親スコープから取得したオブジェクトにプロパティを割り当てます。配列オブジェクトは両方のスコープで表示されるため、それに割り当てたプロパティも表示されます。

于 2013-06-17T18:34:59.180 に答える
0

オブジェクトにプロパティを追加しているだけです。

于 2013-06-17T18:30:49.637 に答える