在Javascript中的回调函数中调用对象函数

时间:2014-07-07 17:06:56

标签: javascript jquery function oop call

我有以下Javascript对象:

var obj = (function (){
   return{
     functionOne: function(){}
     functionTwo: function(){
        $("#div").rotate(){
           callback: function(){
              functionOne(); // this doesn't work
           }
        });
     }
   }
}

当我在functionTwo中的回调函数中调用functionOne时,functionOne是未定义的。如何从withint回调函数调用functionOne(属于我使用的插件)?

2 个答案:

答案 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
           }
        })
     }
   }
}());