我仍然无法理解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 上感到很困扰。