我在一个对象的函数内部,我需要调用一个外部函数并将对函数的引用作为参数传递。最后一个函数参数this
多次使用关键字,因此我需要将其限定在我的对象中。我通过这样做解决了这个问题:
MyObj.prototype.internalFunc= function(data){
this.doSomethingWithReturnedData(data);
};
MyObj.prototype.doSomething= function(){
var $this = this;
externalFunction(this.someVar, function(data){ $this.internalFunc(data); });
};
var objInst = new MyObj();
objInst.doSomething();
我想知道是否有办法避免这种混乱var $this = this
的事情。
我还想:
//... (same as before)
MyObj.prototype.doSomething= function(){
var $this = this;
externalFunction(this.someVar, this.internalFunc, this);
};
//... (same as before)
和
function externalFunction(arg1, cbfunc, thisref){
//bla bla things
cbfunc.call(thisref, blablaData);
};
但我也觉得它很乱。
我认为有更好的方法,但我没有看到!提前致谢!