给出一个类及其实例
var class=function() {
this.propA=99;
this.methodA=function() {
console.log(this.propA);
};
};
var object=new Class();
我希望能够对方法A执行调用,其中this
将成为其实例,示例(this.propA
)将起作用。正好是
object.methodA.call(object);
但没有引用object
。在某些pseoducode中就像这样:
var methodToCall=object.methodA;
...
...
methodToCall.call(getInstanceOwnerOf(methodToCall));
这样做的目的是将方法作为回调传递给异步函数,并在调用方法时将this
作为实例。
一些解决方法是将method
和object
传递给该异步函数,或将this
存储在局部变量中,但这些是我想要避免的。
答案 0 :(得分:1)
使用绑定到bind到您想要函数调用的上下文。注意这会返回一个与原始函数不同的NEW函数。
我通常创建新功能并给它一个不同的名称,但你可以采用多种方式。
更具体地说,你不能确定this是声明函数的类,取决于你如何调用函数以及你是否处于严格模式。
以下示例:
小提琴:https://jsfiddle.net/f7af535L/
class SomeClass {
constructor(someVar) {
this.myVar = someVar;
this.publicSayVar = this.sayVar.bind(this);
}
sayVar() {
console.log(this.myVar);
}
}
var object = new SomeClass("hello");
var testcall = object.publicSayVar;
testcall();