如何将此arg传递给javascript函数

时间:2016-03-20 10:45:29

标签: javascript

我有这段代码

var a = {
    b: function(){
        this.c();
    },
    c: function(){
        console.log("here");
    }
}

var x = {
    y: function(callback){
        callback();
    }
}

如何传递this参数,以便在调用x.y(a.b)时工作正常?我的意思是我想在访问a.b时访问“a”对象的所有成员,因为它将它作为参数传递给x.y

2 个答案:

答案 0 :(得分:3)

您必须手动bind上下文

x.y(a.b.bind(a));

如果您不绑定它,则this函数内的a.b将被视为x

答案 1 :(得分:0)

您需要将对象的引用传递给函数y。这是因为当你传递函数a.b时,你不会告诉javascript传递从对象a调用的函数b,而只是传递函数的引用。我要做的是使用“call”函数,它允许设置你想要调用的函数的“this”属性:

var x = {
y: function(callback,objFrom){
    callback.call(objFrom);
    }
}

然后:

x.y(a.b,a);

清除你的想法“这个”在javascript中的含义你可以阅读这篇对我真有用的文章:http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/