为了账号安全,请及时绑定邮箱和手机立即绑定

不是很理解继承的那个地方

不理解用了call()为什么还要用到util.inherit(),既然都要用到继承,为什么还要使用.call()?

正在回答

6 回答

inherit是让readstream继承readable原型上的方法,而call是让readstream的new出来的实例得到readstream的定义的方法,变成自己的,让然new的实例也会继承readable原型上的方法,因为_proto_的_proto_就指到了readable。

0 回复 有任何疑惑可以回复我~

我是这么理解的:

        有a b俩个函数

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运行,弹出3,你打开隐藏,会提示你this.mc没找到- - 说明使用call,仅仅只能继承函数内部的属性,
函数原型的方法是继承不到的(其实这里说继承,是不准确的,且当是继承吧,反正就是能使用函数内部的一切)。
inherits刚好相反,继承的是a函数原型的mc方法,反而a函数的内部的sk属性继承不到。

新手互勉

1 回复 有任何疑惑可以回复我~

打个比方,说明继承则是承认了爸爸和儿子的关系,这里可以没有血缘关系(实际方法自己重写),而那些私生子就是拿到了那些方法,但是没有被继承,没有儿子这个身份就不能去做爸爸能做的事。

0 回复 有任何疑惑可以回复我~

你参考下这个http://sentsin.com/web/179.html;;;;

.call只是把别的某个函数拿来自己用,,

而util.inherits是把stream.Readable圆形链上面的函数继承到ReadStream上来!

PS:有错请指出

1 回复 有任何疑惑可以回复我~

怎么直接提问scott老师的啊?

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

老汪仔

这是javascript上面的原型那一块,回头去看看javascript权威指南 或者javascript高级程序设计
2016-05-24 回复 有任何疑惑可以回复我~

 我也是小白,表示不理解

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
进击Node.js基础(二)
  • 参与学习       76754    人
  • 解答问题       226    个

本教程带你攻破 Nodejs,让 JavaScript流畅运行在服务器端

进入课程

不是很理解继承的那个地方

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信