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

这个TransformStream既然后面已经用了继承stream.Transform,为什么前面还要call(this)?

他既然继承了,就拥有了他的所有方法,为什么前面还要给个 call(this)来劫持呢??求教老师。

正在回答

1 回答

这里是为了实行原型继承,call本身只是对象冒充,不具备继承原型链上的方法;首先让Transform这个构造出来的对象得到stream.Transform所具有的方法,因为util的inherit方法是让Transform对象继承于stream.Transform的原型(并不是让stream.Transform与Transform形成继承关系,所以Transform在没call()前不具备stream.Transform的方法,这一点可以去深入了解nodejs的util的inherit方法),再来重写stream.Transform上原型的方法。

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

慕田峪6302525

有个疑问 这样重写stream.Transform上原型的方法,不就影响所有stream.Transform的实例了吗?? 为什么不让Transform对象继承于stream.Transform的一个实例,这样的话,重写Transform对象上原型的方法就是重写stream.Transform的一个实例的方法而已,不会影响到其他stream.Transform的实例。 总感觉我忽略了哪里 或者没理解这样的意图
2018-06-30 回复 有任何疑惑可以回复我~
#2

慕田峪6302525

先call(this)后inherit 和 直接new出来一个stream.Transform的实例 不是一样吗 为什么这样写
2018-06-30 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

这个TransformStream既然后面已经用了继承stream.Transform,为什么前面还要call(this)?

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