亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于實例,原型和對象

開始以為自己明白了關于實例和原型的問題,今天聽老師說了感覺還差的好遠;

兩個對象,A和B

1:A=new B

2:A.prototype=new B

3:A.prototype=B.prototype

1:第一個老師在視頻中A是一個變量obj,是不是表示obj是B的實例,obj作為B的實例和B都有一個指針指向了B的原型?

如果這里的obj是一個對象A是不是意味著這個對象A有一個指針指向了B的原型,同時作為對象,他還有一個默認的指針指向了他本身的原型object.prototype?一個對象可以有兩個原型鏈的繼承嘛;求指點

2:A作為一個對象。第一種想法是他有一個自帶的prototype,如果這是我給他的prototype指向了new B;是不是說給他的默認的原 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?型指向了B的原型;

????????????????????????????? ? 第二種想法是他的自帶的原型指向了A,然后通過A再向上到A的原型;

3:A.prototype=B.prototype:此時也是A和B的指針同時指向了B的原型,似乎和第2個的第一種想法類似;

3和2中的第一個似乎有相同之處;他們之間的差別是不是2中的A有自己的原型.然后通過他的原型到B的原型;而三中的A直接將B的原型作為自己的原型了,也就是說此時我如果改變A的原型也就意味著將B的原型改變了,畢竟他們本是就是一個東西嘛。

我知道自己想的說的一塌糊涂了,不過還是希望能將自己的想法說出來,希望能有大神分析一下給指出哪里不對,以及上面幾種繼承的不同之處,拜謝


正在回答

2 回答

我不是大神,在這里說一下自己的想法,自己理解的這個,我也不知道是不是正確,你可以看看:

對于1.A=new B,就像ppt中的obj= new foo()一樣,a是一個變量obj,表示obj是B的實例,obj的[[proto]]是指向B的說明obj的原型就是B,也就是a的object.prototype就是B,而B再往上指向B自己的原型,此處沒有矛盾,而obj變量也就是a對象只有一個原型鏈。。。下面2和3也可以按照這種思路理解

1 回復 有任何疑惑可以回復我~
#1

qq_洛書河圖_0 提問者

謝謝,回去看了下書,差不多大概能理解點了
2016-04-08 回復 有任何疑惑可以回復我~

樓主說的我也沒完全看明白,不過基于那三個表達式,我是這樣理解的

1:這時候A其實是用構造器方法New B()實例化的一個對象,當然A的原型其實就是B.prototype,因為嚴格來說A就是B的一種存在方式,但是此時A不能再作為構造器實例化其他函數,正因為它是B的實例化,即不不能使用var c=new A();這也是它跟下面第二個表達式的本質區別

2:A.prototype=new B(); new B()其實就是創建了一個空對象,并且繼承了B的原型,但是不會影響B自己的引用,即修改A是不會污染B的,可以說實現了繼承,此時可以用A構造器方法實例化新的對象。例如視頻例子用boson=new student(...);這是一種可行的繼承。

3.這種就是將A.prototype直接指向了B.prototype,即他們的原型就同一引用,而不是像第二個方法,創建了一個B的空對象給A提供引用。這樣會導致修改A,B也會跟著變化,就是我說的互相污染,顯然不是繼承應該有的現象。

我也是剛看JS沒多久,可能說的有好多不對的地方,希望能起一點作用。

4 回復 有任何疑惑可以回復我~
#1

qq_洛書河圖_0 提問者

只能采納一個人的,不過還是得謝謝你了,寫了這么多,,
2016-04-08 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript深入淺出
  • 參與學習       281094    人
  • 解答問題       1054    個

由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握

進入課程

關于實例,原型和對象

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號