将函数复制到局部变量并保留此指针

时间:2015-12-28 14:54:09

标签: javascript

我在这样的原型上有一个函数:

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

会更加冗长

2 个答案:

答案 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的一个非常基本的设计特性,因此很难解决它。