ホームページ >ウェブフロントエンド >jsチュートリアル >AngularJS は常に子スコープのプロトタイプ継承を使用しますか?
AngularJS におけるスコープ プロトタイプ / プロトタイプ継承のニュアンス
質問:
簡単な答え:
子スコープは通常、親からプロトタイプを継承します。 ng-repeat、ng-switch、ng-include などの API を介してスコープを設定できますが、常にそうとは限りません。 1 つの例外は、スコープ {...} を持つディレクティブです。これは、プロトタイプ的に継承しない分離スコープを作成します。
長い回答:
JavaScript プロトタイプの継承
JavaScript のオブジェクトはプロトタイプを介してリンクされ、プロトタイプのチェーンを形成します。 継承。子オブジェクトは、子に直接定義されていない場合でも、親プロトタイプのプロパティとメソッドにアクセスできます。
以下の例では、childScope はparentScope から継承します。
// parentScope object parentScope = { aString: 'parent string', anArray: [1, 2, 3], anObject: { prop1: 'parent prop1' }, aFunction: function() { console.log('parent output'); } }; // childScope object inherits from parentScope childScope = Object.create(parentScope);
Angular スコープの継承
AngularJS はプロトタイプの継承を利用して、スコープ。スコープは主にアプリケーション内のデータと関数を処理します。子スコープは通常、親スコープから継承し、そのプロパティとメソッドにアクセスできます。
ただし、注意すべき例外とニュアンスがあります。
ng-include および ng-switch
これらのディレクティブは、親スコープからプロトタイプ的に継承する新しいスコープを作成しますが、へのバインドには注意してください。子スコープからのプリミティブ (数値、文字列、ブール値など)。子スコープのプロパティが非表示になるため、予期しない動作が発生する可能性があります。代わりに、オブジェクト、$parent、または親スコープ関数の使用を検討してください。
ng-repeat
Ng-repeat は、工夫を凝らして子スコープを作成します。反復された項目の値を使用して、新しいプロパティを子スコープに割り当てます。項目がプリミティブの場合、親配列に影響を与えない独立したコピーが作成される可能性があります。ただし、項目がオブジェクトの場合、参照は共有され、子スコープの変更は親配列に反映されます。
ディレクティブ
結論
プロトタイプの継承は、AngularJS のスコープ設定の基本的な側面です。上記のニュアンスと例外は、落とし穴を回避し、アプリケーションで継承を効果的に使用するのに役立ちます。複数のスコープを使用する場合は、データ型、スコープのタイプ (分離など)、プロパティの隠蔽の可能性を忘れずに考慮してください。
以上がAngularJS は常に子スコープのプロトタイプ継承を使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。