私はこれをarticle角度継承について読んでおり、JavaScript Prototypal Inheritanceから始めました。記事によると、childScope.aString = 'child string'
という新しいプロパティは、同じ名前がのparentScopeプロパティを隠す/シャドウしますが、childScope.anArray[1] = 22
を実行すると、元のオブジェクトのプロパティ値が更新されます。と私はそれを理解していません。
誰でも助けることができます。
は、明示的にオブジェクトa
のプロパティb
に値を代入し、事前にJavaScriptプロトタイプ継承
答えて
childScope.aString = 'child string'
childScope.anArray[1] = 22
ためのルックアップ操作を読みません
最初のケースでは、プロパティの値に割り当てが直接行われています。 JavaScriptは子スコープに新しいプロパティを追加します。
2番目のケースでは、プロパティの内容に割り当てが行われています。プロパティは子スコープに存在しないため、JavaScriptはプロトタイプチェーンを検索して既存のの内容を検索してを修正します。
詳細については、AngularJS Wiki -- Understanding Scopes and the Nuances of Prototypical Inheritanceを参照してください。
a.b = c
をお願いします。暗黙的に継承されたすべてのプロパティが上書きされます。実際の継承と実際のJavaScriptでサンプル:
function A() {}
A.prototype.b = 'c';
var a = new A();
console.log(a.b);
a
が実際にプロパティb
を持っていない、それは単にプロトタイプから継承されています。今:
a.b = 'd';
これは今a
に直接実際のプロパティb
を添付しました。プロトタイプはまだプロパティーb = 'c'
を持っていますが、これはもうa
には表示されません。 a.b
は'd'
になりました。
これとa.anArray[1] = 22
の違いは、ここではです。変更可能なオブジェクトはです。 a
のプロパティに割り当てていない場合は、a
からプロパティを取得してから変更します。これは変更されませんa
、それはオブジェクトanArray
のインスタンスを変更します。 anArray
にアクセスできるすべてに表示されます。
プロパティアクセスの解決は、プロパティの書き込みまたは読み取り操作の一部として発生する可能性があります。 Prototypal継承では、読み取り操作の一部としての解決だけが継承されたプロパティの参照を必要とすると述べています。
最初のシナリオでは、プロパティに書き込みオペレーションが含まれているため、継承されたプロパティのルックアップは発生しません。しかし、プロパティルックアップは、プロパティではない書き込み動作、プロパティのインデックス・ルックアップの一部として起こる第2のシナリオでは
- すなわちこれ継承されたプロパティ
- 1. プロトタイプ継承(javascript)
- 2. JavaScript継承プロトタイプ
- 3. JavaScriptプロトタイプ継承(プロトタイプのチェーン)
- 4. Javascriptのプロトタイプ継承
- 5. Javascriptプロトタイプと継承
- 6. Javascriptプロトタイプの継承とObject.create()?
- 7. プロトタイプ継承 -
- 8. プロトタイプ継承
- 9. JavaScriptのプロトタイプ継承の理解
- 10. Javascript、プロトタイプが継承しない
- 11. javascriptのhasOwnPropertyをプロトタイプと継承
- 12. nodejs/javascriptの再帰的プロトタイプ継承
- 13. Javascriptでのプロトタイプ継承の使用
- 14. javascriptでプロトタイプを使用した継承
- 15. Javascriptのプロトタイプの継承の相違点
- 16. javascriptプロトタイプの継承とオブジェクトのプロパティ
- 17. Javascriptの継承/プロトタイプの混乱
- 18. プロトタイプ継承設定
- 19. node.jsのプロトタイプ継承
- 20. jQueryのプロトタイプ継承
- 21. Node.jsプロトタイプの継承
- 22. Node.js必要なプロトタイプ継承
- 23. JSゲッター/セッターのプロトタイプ継承
- 24. JSのプロトタイプと継承
- 25. 古典継承とプロトタイプ継承の違いを理解する
- 26. JavaScript - JSONオブジェクトは親プロトタイプのプロパティを継承できますか?
- 27. Javascriptプロトタイプは継承されずに未定義ですか?
- 28. JavaScriptの継承JQueryとプロトタイプDOM拡張の比較
- 29. Javascriptのプロトタイプ継承を使用する理由
- 30. javascript:プロトタイプ継承に関する1つの混乱の点
私はより長い抽出が役立つと思います。私は彼らが何を話しているのか知っていることはほとんど確信していますが、あなたの引用は本当に誤解を招くものです。 – Sebas
私は記事へのリンクを追加しました。私の問題は最初の段落を説明しています。 – aName
私はそれがプリミティブであればオブジェクトのタイプに依存していると思いますが、それは子スクープで作成されます存在していない場合)、それ以外の場合は親スコープでそれを探します – aName