我在这样的原型上有一个函数:
Car.prototype.drive = function() {
this.currentSpeed = this.speed;
}
我想在另一个函数中经常调用这个函数,这个函数也是原型Car的一部分。因为我很懒,所以我不想一直重写this
。所以我想将对函数的引用复制到局部变量:
Car.prototype.doSomeThing = function() {
var driveReference = this.drive;
driveReference();
}
但当我致电driveReference()
时,this
指针driveReference()
指向Window
而不是Car
}。
有可能阻止这种情况吗?
(apply()
会起作用,但使用this
)
答案 0 :(得分:2)
您可以使用cellfun
将函数的上下文绑定到您喜欢的任何内容:
{{1}}
答案 1 :(得分:1)
你可以写
var driveRef = this.drive.bind(this);
但是that can have some possibly unwanted performance impact。或者您可以将this
复制到较短的变量名称:
var me = this;
me.drive();
明确地使用对上下文对象的引用是JavaScript的一个非常基本的设计特性,因此很难解决它。