<code><script type="text/javascript"> function Person(){} Person.prototype.array = new Array("Koji", "Luo"); Person.prototype.showArray = function(){ alert(this.array); } var obj1 = new Person(); //生成一个Person对象 var obj2 = new Person(); obj1.array.push("Kyo"); //向obj1的array属性添加一个元素 obj1.showArray(); //Koji,Luo,Kyo obj2.showArray(); //Koji,Luo,Kyo </script> </code>
Wenn ein Element zum Array von obj1 hinzugefügt wird, wird es auch zum Array von obj2 hinzugefügt.
Ist das Array, das sie erben, ein Zeiger? Was jeder hat, ist das Array im Prototypobjekt?
<code>//最后问一个很奇怪的问题(prototype中的array难道也只是一个指针?) </code>
Vielen Dank an alle..
<code><script type="text/javascript"> function Person(){} Person.prototype.array = new Array("Koji", "Luo"); Person.prototype.showArray = function(){ alert(this.array); } var obj1 = new Person(); //生成一个Person对象 var obj2 = new Person(); obj1.array.push("Kyo"); //向obj1的array属性添加一个元素 obj1.showArray(); //Koji,Luo,Kyo obj2.showArray(); //Koji,Luo,Kyo </script> </code>
Wenn ein Element zum Array von obj1 hinzugefügt wird, wird es auch zum Array von obj2 hinzugefügt.
Ist das Array, das sie erben, ein Zeiger? Was jeder hat, ist das Array im Prototypobjekt?
<code>//最后问一个很奇怪的问题(prototype中的array难道也只是一个指针?) </code>
Vielen Dank an alle..
Zunächst müssen Sie verstehen, wie die Vererbung umgesetzt wird. .
1. Der Konstruktor hat ein prototype
-Attribut.
2. Jede Instanz eines Konstruktors verfügt über ein __proto__
-Prototypattribut, das auf seinen Konstruktor verweist.
3. Beim Zugriff auf ein Attribut, das nicht in einem Objekt selbst vorhanden ist, wird über __proto__
im Prototyp seines Konstruktors danach gesucht.
4. Der Aufruf von obj1.array
greift also auf Person.prototype.array
zu; der Aufruf von obj2.array
greift auch auf Person.prototype.array
zu.
5, obj1
und obj2
alle teilen dies array
.
6. Es hat also nichts mit der Wertübergabe oder der Referenzübergabe zu tun. Ursprünglich hat jede Instanz auf einen prototype
zugegriffen. Jede Instanz hat keine Kopie des Konstruktorprototyps gespeichert...