Heim  >  Artikel  >  Backend-Entwicklung  >  javascript - JS Stellen Sie eine Frage zu einem neuen Objekt, das das Array eines Prototyps erbt?

javascript - JS Stellen Sie eine Frage zu einem neuen Objekt, das das Array eines Prototyps erbt?

WBOY
WBOYOriginal
2016-08-27 09:06:53976Durchsuche

<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..

Antwortinhalt:

<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...

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn