我有这段代码
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
答案 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/