編集:今後この記事を参照している人々のために、this siteは間違いなくJavascriptを消化するために重要でした。あなたが伝統的なOOPの背景から来ているなら、私はそれを強く勧めます。 UML-esqダイアグラムは素晴らしいものでした。ラーニング.prototype
私はまだJavascriptの.prototypeプロパティが何であるかを頭に浮かべることはできません。それは単なる別のオブジェクトへの参照ですか?それとも別のオブジェクトへのポインタへの参照ですか?私はC/C++/x86から来て、それがどのように動作するかわかりません。私が現在どのように物事を見ているかの例を見てみましょう。私のエラーを指摘して、どのように動作するかを知ることができます。これらのうちのいくつかが有効な構文であるかどうかわかりません。 Object
およびFunction
はそれぞれグローバルオブジェクト/関数オブジェクトです。
私はとても混乱しています。
11 var Foo = function() { this.prop1 = 0; }
12 var foo = new Foo(); // should it be 'new Foo' or 'new Foo()'?
13 // Foo.prototype = Function
14 // foo.prototype = Foo
15 var Goo = function() { this.prop2 = 0; }
16 var goo = new Goo();
17 // goo.prototype = Goo
18 goo.prototype = new Foo();
19 // goo.prop1 now exists ?
また、プロトタイプの交換についてもわかりません。
20 function A() {
21 this.prop1 = 1;
22 }
23 function B() {
24 this.prop2 = 2;
25 }
26 function C() {
27 this.prop3 = 3;
28 }
29 C.prototype = new B();
30 var c = new C();
31 // c.prop1 = 1
32 // c.prop2 = 2
33 // c.prop3 = undefined
34 C.prototype = new A();
35 // c.prop2 = 2???
36 // c.prop3 = 3
私は概念を把握できません。私はかなり理解していない。クローンされたオブジェクトがローカルのデータコピーをどのように取得するのかはわかりませんが、元のオブジェクト(プロトタイプ)の変更は何らかの形でクローンにカスケードされます。私は物事を試すFigureBugの周りいじるしてきたが、精神的に私はすべての例と一致しているのアイデアを思い付くことができません
C++は巨大な怪物かもしれないが、少なくとも私は正確を知っているのを見アイブ何が起こっているの?ここに...私は最高の推測を使用しています。 私が推測するちょうど新しいパラダイム。とにかく、助けてくれてありがとう...私はこの.prototypeについては逆さまになっています。
この質問で私の答えを確認してください:http://stackoverflow.com/questions/17047025/trying-to-standstand-javascript-inheritence/17049716#17049716 – Hoffmann
obj.xを求めてobjにそれがない場合JSはobj.prototype.xの存在をチェックし、存在する場合はそれを返し、それ以外の場合はundefinedを返します。それをプログラミングのためのコールフォワーディングと考えると、プロトタイプはあなたがデータに到達しようとすることのできる別の番号です。別の電話機なので、代替回線が破棄された場合でもメイン回線を呼び出すことができます。 – dandavis
@dandavis OKこのシナリオを取得します。どのような.prototypeが参照されているのか、デフォルトで何が設定されているのか、プロトタイプを交換するのはどうなるのでしょうか? – gone