在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 關(guān)于es5原型繼承的問題

關(guān)于es5原型繼承的問題

關(guān)于es5繼承中子構(gòu)造函數(shù)原型的問題

clipboard.png

圖中代碼第5行
我能夠理解第四行子構(gòu)造函數(shù)的原型是父構(gòu)造函數(shù)new出來的 Sub.protorype = new Super()
所以在這里 Sub.protorype.constructor === Super 是為true的
至于要把子構(gòu)造函數(shù)的原型的構(gòu)造函數(shù)重新指向自身的原因是什么呢
我發(fā)現(xiàn)好像不執(zhí)行這個(gè)語句的話 Sub.protorype.constructor = Sub 也能進(jìn)行繼承

回答
編輯回答
墻頭草

constructor只是告訴你實(shí)例是用哪個(gè)構(gòu)造函數(shù)初始化的,不影響原型鏈

Sub.protorype.constructor = Sub;

不管上面這句寫還是不寫,都不影響原型鏈,以下代碼恒為真

       Sub.prototype.__proto__.__proto__ === Object.prototype //原型鏈
       sub1 instanceof Super
       sub1 instanceof Sub //實(shí)例加了個(gè)1,更好區(qū)分Sub構(gòu)造函數(shù)

總之,原型鏈取決于__proto__這個(gè)玩意,constructor只是用于檢測(cè)的一個(gè)指針屬性

2017年2月14日 17:19
編輯回答
浪蕩不羈

是能繼承啊,但是Sub的實(shí)例獲取constructor的時(shí)候就錯(cuò)了,成了Super明顯是不對(duì)的,這是副作用,要糾正這個(gè)副作用。

2017年4月21日 20:07