我有以下Javascript对象:

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


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

最佳答案

您可以尝试先设置要返回变量的对象,然后再引用该对象:

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 = {
    ...
};


两种方式都做同一件事。您要使用哪一个取决于个人喜好以及您认为它们的可读性。

10-04 12:36