给定一个类及其实例
var class=function() {
this.propA=99;
this.methodA=function() {
console.log(this.propA);
};
};
var object=new Class();
我希望能够执行对 methodA 的调用,其中 this
将是它的实例,并且示例 (this.propA
) 将起作用。完全一样
object.methodA.call(object);
但是没有任何对对象
的引用。像这样的一些伪代码:
var methodToCall=object.methodA;
...
...
methodToCall.call(getInstanceOwnerOf(methodToCall));
这样做的目的是将方法作为回调传递给异步函数,并在调用该方法时将 this
保留为实例。
一些解决方法是将方法
和对象
传递给该异步函数,或者将this
存储在局部变量中,但这些是我想避免的事情。
最佳答案
使用绑定(bind)到bind到您想要调用函数的上下文。请注意,这将返回一个与原始函数不同的新函数。
我通常创建新函数并给它一个不同的名称,但您可以通过多种方式完成它。
更具体地说,您无法确定 this是声明函数的类,取决于您如何调用函数以及是否处于严格模式。
下面是一个例子:
fiddle :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();
关于javascript - 获取方法的实例所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40199381/