javascript - javascript 中的 .call 是否将自身绑定(bind)到调用对象?

标签 javascript node.js oop

我见过很多这样的例子:

function MyThing() {
   SomeObj.call(this);
}

我知道 .call 正在使用 MyThing 的 this 的上下文调用 SomeObj。我不明白的是这是否也将 SomeObj 的原型(prototype)绑定(bind)到 MyThing?

我实际看到的实现方式是通过在 Node 中使用 Streams。

util.inherits(MyStream, Transform);

function MyStream() {
    Transform.call(this);
}

MyStream.prototype._transform = function (chunk, encoding, done) {}

var test = new MyStream();

为什么我们必须调用 Transform.call(this)?这是否基本上取代了必须首先创建一个 new Transform() 然后使用 util.inherits?

最佳答案

没有;您仍然需要调用 util.inherits()

调用超构造函数的目的正是——在该构造函数中运行任何逻辑,初始化实例基类。
它与原型(prototype)无关,尽管超构造函数很可能假定 this 继承了它的原型(prototype)。

关于javascript - javascript 中的 .call 是否将自身绑定(bind)到调用对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616835/

相关文章:

javascript - 如何避免在 paper.js 中的每一帧重绘每个对象

java - 为新项目对话框和编辑项目对话框或不同的类设置一个类更好吗?

javascript - 将鼠标悬停在文本上时显示 iframe

javascript - 如何在nodejs中接收上传的文件

javascript - 如何流式传输 blob

node.js - 部署到 dotcloud 的 Webservice/worker 服务

javascript - 我怎样才能在 OOP 方面做得更好?

c++ - 我可以假设兄弟类的静态转换将无法编译吗?

javascript - HTML 5 媒体流用于录制功能上的视频录制问题

javascript - 通过 JavaScript 设置匿名 DOM 元素的属性?