我有以下Javascript对象:
var obj = (function (){
return{
functionOne: function(){}
functionTwo: function(){
$("#div").rotate(){
callback: function(){
functionOne(); // this doesn't work
}
});
}
}
}
当我在functionTwo中的回调函数中调用functionOne时,functionOne是未定义的。如何从withint回调函数调用functionOne(属于我使用的插件)?
答案 0 :(得分:4)
您可以先尝试设置要返回变量的对象,然后引用它:
var obj = (function(){
var o = {
functionOne: function(){
console.log('functionOne');
},
functionTwo: function(){
$("#div").rotate({
callback: function(){
o.functionOne();
}
});
}
};
return o;
})();
obj.functionTwo(); // logs "functionOne"
您还可以使用以下内容:
var o;
return o = {
...
};
两种方式都做同样的事情;您想要使用的是个人偏好以及您认为它们的可读性。
答案 1 :(得分:1)
在functionTwo
内,这指的是对象。因此,如果保存引用,则可以像这样调用函数:
var obj = (function (){
return{
functionOne: function(){},
functionTwo: function(){
var o = this;
$("#div").rotate({
callback: function(){
o.functionOne(); // this does work
}
})
}
}
}());