我见过很多这样的例子:
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/