好的,我无法找到一个更好更清晰的标题,但基本上我已经得到了这个:
var obj = function () {
return {
hi: function (name) {
console.log("HI! " + name);
},
fun1: (function (cllb, name) {
//WRONG!! I'm binding the callback not the hi function
var f = cllb.call(this, name)
}).bind(this)
}
}
我这样打电话给fun1
:
var q = new obj()
q.fun1(function () {
hi("paco")
})
请注意我如何使用hi("paco")
而非this.hi("paco")
。我需要避免回调中的this
。我知道它不是最实用和最逻辑的方式,但在我的真实代码中,原因更为明显。是否可以在Javascript中执行此操作?
答案 0 :(得分:0)
除非您将hi
作为参数传递给回调,否则无法只调用hi(..)
。 JavaScript有lexical scope,hi
不在回调范围内。
是否可以在Javascript中执行此操作?"
答案只是否。
答案 1 :(得分:0)
也许你会得到最接近的。
function thing(){
this.fun1 = function(cb){
var b = 'this.'+cb();
var c = new Function(b);
c.call(this);
};
}
var t = new thing();
thing.fun1(function(){
return 'hi("paco");';
});