編集:将来この投稿を見る人にとって、このサイトは私がJavascriptを理解するのに間違いなく重要でした. あなたが伝統的な OOP のバックグラウンドを持っているなら、私はそれを強くお勧めします。UML 風のダイアグラムは素晴らしかったです。
Javascript の .prototype プロパティが何であるかについて、私はまだ理解できません。それは単に別のオブジェクトへの参照ですか?それとも、別のオブジェクトへのポインタへの参照ですか? 私は C/C++/x86 から来ましたが、それがどのように機能するかわかりません。私が現在物事をどのように見ているかの例をいくつか見てみましょう。エラーを指摘して、物事がどのように機能するかを確認するのに役立ちます。これらのいくつかが有効な構文であるかどうかさえわかりません。Object
およびFunction
は、それぞれグローバル オブジェクト/関数オブジェクトです。
1 // Global.prototype = ??
2 // Function.prototype = ??
3
4 var obj1 = {}; // obj1.prototype = Object
5 obj2 = {}; // obj2.prototype = Object
6
7 var func1 = function() {}; // func1.prototype = Function
8 func2 = function() {}; // func2.prototype = Function
9 function func3() {} // func3.prototype = Function
10
私は困惑している。
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で逆さまになっています。