課程
/前端開發(fā)
/Node.js
/進(jìn)擊Node.js基礎(chǔ)(二)
不理解用了call()為什么還要用到util.inherit(),既然都要用到繼承,為什么還要使用.call()?
2016-05-09
源自:進(jìn)擊Node.js基礎(chǔ)(二) 2-4
正在回答
inherit是讓readstream繼承readable原型上的方法,而call是讓readstream的new出來(lái)的實(shí)例得到readstream的定義的方法,變成自己的,讓然new的實(shí)例也會(huì)繼承readable原型上的方法,因?yàn)開proto_的_proto_就指到了readable。
我是這么理解的:
????????有a b倆個(gè)函數(shù)
function?a(d){ ????this.sk?=?function(){ ????????alert(d) ????} ????//this.mc() } //a.prototype.mc?=?function(){ ????//alert(2) //} function?b(f){ ????a.call(this,f) } var?c?=?new?b(3).sk() //F12運(yùn)行,彈出3,你打開隱藏,會(huì)提示你this.mc沒找到-?-?說明使用call,僅僅只能繼承函數(shù)內(nèi)部的屬性, 函數(shù)原型的方法是繼承不到的(其實(shí)這里說繼承,是不準(zhǔn)確的,且當(dāng)是繼承吧,反正就是能使用函數(shù)內(nèi)部的一切)。 inherits剛好相反,繼承的是a函數(shù)原型的mc方法,反而a函數(shù)的內(nèi)部的sk屬性繼承不到。
新手互勉
打個(gè)比方,說明繼承則是承認(rèn)了爸爸和兒子的關(guān)系,這里可以沒有血緣關(guān)系(實(shí)際方法自己重寫),而那些私生子就是拿到了那些方法,但是沒有被繼承,沒有兒子這個(gè)身份就不能去做爸爸能做的事。
你參考下這個(gè)http://sentsin.com/web/179.html;;;;
.call只是把別的某個(gè)函數(shù)拿來(lái)自己用,,
而util.inherits是把stream.Readable圓形鏈上面的函數(shù)繼承到ReadStream上來(lái)!
PS:有錯(cuò)請(qǐng)指出
怎么直接提問scott老師的啊?
老汪仔
?我也是小白,表示不理解
舉報(bào)
本教程帶你攻破 Nodejs,讓 JavaScript流暢運(yùn)行在服務(wù)器端
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-01-14
inherit是讓readstream繼承readable原型上的方法,而call是讓readstream的new出來(lái)的實(shí)例得到readstream的定義的方法,變成自己的,讓然new的實(shí)例也會(huì)繼承readable原型上的方法,因?yàn)開proto_的_proto_就指到了readable。
2016-12-22
我是這么理解的:
????????有a b倆個(gè)函數(shù)
新手互勉
2016-11-03
打個(gè)比方,說明繼承則是承認(rèn)了爸爸和兒子的關(guān)系,這里可以沒有血緣關(guān)系(實(shí)際方法自己重寫),而那些私生子就是拿到了那些方法,但是沒有被繼承,沒有兒子這個(gè)身份就不能去做爸爸能做的事。
2016-06-26
你參考下這個(gè)http://sentsin.com/web/179.html;;;;
.call只是把別的某個(gè)函數(shù)拿來(lái)自己用,,
而util.inherits是把stream.Readable圓形鏈上面的函數(shù)繼承到ReadStream上來(lái)!
PS:有錯(cuò)請(qǐng)指出
2016-05-10
怎么直接提問scott老師的啊?
2016-05-09
?我也是小白,表示不理解