AngularJS におけるスコープ プロトタイプ / プロトタイプ継承のニュアンスは何ですか?
プロトタイプ継承のレビュー
プロトタイプの継承は JavaScript のメカニズムですここで、オブジェクトは他のオブジェクトからプロパティとメソッドを継承できます。これは、プロトタイプ チェーンを通じて実現されます。
AngularJS スコープの継承
AngularJS スコープは、親スコープからプロパティとメソッドをプロトタイプ的に継承できます。ただし、このルールにはいくつかの例外があります。
-
スコープを持つディレクティブ: {...}: これらは、プロトタイプ的に継承しない「分離」スコープを作成します。これは、再利用可能なコンポーネントを作成するためによく使用されます。
-
双方向データ バインディング例外:
-
プリミティブ: バインド時子スコープから親スコープのプリミティブ (文字列、数値、ブール値) に変換すると、子スコープは親プロパティを非表示にする独自のプロパティを取得します。
-
Ng-repeat、ng-switch、ng-include: これらのディレクティブは、新しい子スコープと双方向のデータ バインディング動作も作成します。プリミティブを使用するかどうかは、親スコープ内のモデルがオブジェクトであるか、
ニュアンス
-
シャドーイング: 子スコープは親スコープから継承されたプロパティをオーバーライドできます、親を非表示にする新しいプロパティを子スコープに作成します。 property.
-
プロトタイプ チェーン ルックアップ: 子スコープのプロパティにアクセスするとき、AngularJS は最初に子スコープをチェックし、プロパティが見つからない場合は親スコープにフォールバックします。
-
ループ変数: Ng-repeat は反復ごとに新しい子スコープを作成し、ループを割り当てます変数を子スコープの新しいプロパティに追加します。
-
分離スコープ: 分離スコープは、プロトタイプとして親スコープから継承しませんが、特別な構文を使用して親スコープから特定のプロパティにアクセスできます。
-
親子階層: AngularJS は、 $parent および $$childHead/$childTail プロパティによる親子階層。
ベスト プラクティス
プロトタイプの継承の問題を回避するには、次のことをお勧めします。 :
- 親内のプリミティブへの双方向データ バインディングを回避します
- 親スコープでオブジェクトを定義し、ドット表記 (parentObj.someProp など) を使用して子スコープでそのプロパティを参照します。
- 必要に応じて $parent.parentScopeProperty を使用しますが、への直接アクセスは避けてください。親スコープのプロパティ。
- 再利用可能なコンポーネントには分離スコープ (スコープ: {...}) を使用して、誤った変更または親スコープのプロパティとの衝突。
以上がプロトタイプの継承は AngularJS スコープでどのように機能しますか?また潜在的な落とし穴は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。