-2

AngularJS の継承と拡張の違いを説明できる人はいますか?

どうもありがとう!

リオール

編集: ここを見てください: github.com/angular/angular.js/blob/master/src/Angular.js を検索して「継承」を検索します (現在 246 行目)

4

1 に答える 1

0

Angularには継承関数はありません。

Extendは、あるオブジェクトから別のオブジェクトにプロパティをコピーするだけです。これはJavaScriptのjujuの一般的なビットです。JQueryには拡張機能もあります。

var x = { foo: 'hello' };
var y = { bar: 'world' };    
angular.extend(x, y);    
console.log(x); //{ foo: 'hello', bar: 'world' }

Angularで話していると推測できる唯一の継承は、子スコープが親スコープのプロパティを継承する方法です。ここで違いがあるのはまったく正しいです。なぜなら、それは拡張のようなものを介して行われるのではなく、典型的な継承を介して行われるからです。親スコープが実際には子スコープのプロトタイプである場合。つまり、存在しない子スコープのプロパティにアクセスしようとすると、そのプロパティはそのプロトタイプに分類され、そのプロパティを確認します。存在しない場合は、そのプロトタイプに分類され、そこにプロパティ。

つまり、親のプロパティを更新すると、そのすべての子のプロパティが更新されます...ただし、子のプロパティを更新しても、親は更新されません...プロパティを子に直接設定するため、プロトタイプ(親)ではありません。

それが明確でない場合は、これに関するブログエントリ/StackOverflowの質問がすでにたくさんあります:

于 2013-03-22T23:34:10.510 に答える