Javascript 在回调中为内部函数隐式绑定此函数(避免使用“this”)

Javascript 在回调中为内部函数隐式绑定此函数(避免使用“this”),javascript,Javascript,好的,我找不到更好更清晰的标题,但基本上我有: 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 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实现吗?

除非将
hi
作为参数传递给回调函数,否则无法直接调用
hi(…)
。JavaScript具有,并且
hi
不在回调的范围内

是否可以用Javascript实现?”


答案很简单,

也许是你能得到的最接近的答案

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");';
});

如果您运行类似于
obj.fun1(f,x)的函数,则不使用
.bind(this)
然后
这个
fun1的内部
obj
这个
取决于你调用函数的方式。你可能不应该使用
new
,否则你需要一个构造函数。如果你提供了不使用
这个
的理由,你最好给我们看看你真正的代码。事实上,你总是需要要使用某种属性访问,
hi
不是一个变量。可以使用
this.hi()
q.hi()
。您必须使用
this
调用
hi
是否可以返回?