第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

一個(gè)關(guān)于原型鏈繼承的基礎(chǔ)問(wèn)題

一個(gè)關(guān)于原型鏈繼承的基礎(chǔ)問(wèn)題

動(dòng)漫人物 2019-05-24 18:33:08
最近在研究javascript原型鏈繼承這一塊碰到一個(gè)細(xì)節(jié)問(wèn)題,引起了我的好奇,但是一直想不明白是為什么,請(qǐng)求大神解答:functionShape(){this.name='shape';this.toString=function(){returnthis.name;}}functionTwoDShape(){this.name='2dshape'}functionTriangle(side,height){this.name='triangle';this.side=side;this.height=height;this.getArea=function(){returnthis.side*this.height/2;}}Triangle.prototype=newTwoDShape();TwoDShape.prototype=newShape();Triangle.prototype.constructor=Triangle;TwoDShape.prototype.constructor=TwoDShape;如上段代碼所示,我建立了一個(gè)繼承鏈,從Shape到TwoDShape,再由TwoDShape到Triangle,當(dāng)我再執(zhí)行以下代碼時(shí):varshape1=newTriangle(10,9);console.log(TwoDShape.prototype.isPrototypeOf(shape1));//輸出false程序輸出false,我的理解,是isPrototypeOf尋找的是shape1最直接的那個(gè)原型,即Triangle.prototype,而這里TwoDShape.prototype不是其直接原型,所以輸出了false;然鵝,我在《javascript面向?qū)ο缶幊讨改稀愤@本書(shū)上看到的實(shí)踐則恰恰相反:書(shū)上在實(shí)現(xiàn)繼承時(shí)是這樣做的:functionShape(){}Shape.prototype.name='shape';Shape.prototype.toString=function(){returnthis.name;}functionTwoDShape(){};TwoDShape.prototype=newShape();TwoDShape.prototype.constructor=TwoDShape;TwoDShape.prototype.name='2dshape';functionTriangle(side,height){this.side=side;this.height=height;}Triangle.prototype=newTwoDShape();Triangle.prototype.constructor=Triangle;Triangle.prototype.name='triangle';Triangle.prototype.getArea=function(){returnthis.side*this.height/2;}在執(zhí)行了這段代碼后再console.log(TwoDShape.prototype.isPrototypeOf(shape1));此時(shí)則會(huì)輸出true,我不明白的,是這兩種繼承方式,不都是通過(guò)原型鏈繼承嗎?為什么兩者在這個(gè)點(diǎn)上的輸出會(huì)不一樣呢?我還有個(gè)問(wèn)題,就是在學(xué)習(xí)javascript時(shí)常常碰到這樣理解起來(lái)很匪夷所思的問(wèn)題,應(yīng)該怎樣更好的理解這門(mén)語(yǔ)言呢?
查看完整描述

2 回答

?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

一樓已經(jīng)說(shuō)得夠多了,我就簡(jiǎn)介一點(diǎn)。你唯一的區(qū)別就是Triangle.prototype=newTwoDShape();TwoDShape.prototype=newShape();這兩句沒(méi)有錯(cuò)誤,但其中包含重寫(xiě)原型鏈的問(wèn)題,在TwoDShape.prototype=newShape()這句之前,TwoDShape.prototype的原型對(duì)象是Object,而Triangle也是這時(shí)繼承的TwoDShape。而TwoDShape.prototype=newShape(),這句話之后,TwoDShape經(jīng)歷了一次重寫(xiě)原型鏈的過(guò)程,此時(shí)其原型對(duì)象由Object變?yōu)榱藄hape;但這并不會(huì)改變Triangle的原型指向,其仍指向老的TwoDShape原型構(gòu)造出來(lái)的對(duì)象;所以,所以TwoDShape.prototype.isPrototypeOf(shape1)打印false沒(méi)有問(wèn)題,因?yàn)閟hape1的構(gòu)造函數(shù)Triangle的原型TwoDShape已經(jīng)不再是哪個(gè)單純的Object了,已不再單純。大清早說(shuō)這么繞的話,也是累
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-24
  • 2 回答
  • 0 關(guān)注
  • 375 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)