首頁 > 後端開發 > php教程 > javascript - JS請教一個new物件繼承prototype的Array的問題?

javascript - JS請教一個new物件繼承prototype的Array的問題?

WBOY
發布: 2016-08-27 09:06:53
原創
989 人瀏覽過

<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>
登入後複製
登入後複製

obj1的array中添加一個元素,obj2的array中也會添加.
他們倆繼承的array是一個指針嗎? 大家都有的是prototype這個對像中的array?

<code>//最后问一个很奇怪的问题(prototype中的array难道也只是一个指针?)
</code>
登入後複製
登入後複製

謝謝大家..

回覆內容:

<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>
登入後複製
登入後複製

obj1的array中添加一個元素,obj2的array中也會添加.
他們倆繼承的array是一個指針嗎? 大家都有的是prototype這個對像中的array?

<code>//最后问一个很奇怪的问题(prototype中的array难道也只是一个指针?)
</code>
登入後複製
登入後複製

謝謝大家..

首先要明白是怎麼實現繼承的。 。

1、建構子有一個prototype屬性。
2、建構子的每個實例都有一個__proto__指向其建構子的prototype屬性。
3、當訪問某物件本身不存在的屬性,會透過__proto__去其建構函數的prototype上尋找。
4、所以呼叫obj1.array 訪問的是 Person.prototype.array;調用obj2.array 訪問的也是 Person.prototype.array
5、obj1obj2都共用著這一個array
6、所以跟按值傳遞還是引用傳遞無關。原本各個實例都存取的是一個prototype
各實例沒有保存一份對構造函數原型的拷貝····

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板