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

Call an object function from within a callback function in Javascript

本文关键字:函数 对象 调用 回调 Javascript      更新时间:2023-09-26

我有以下Javascript对象:

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

当我在functionTwo内部的回调函数中调用functionOne时,functionOne是未定义的。我怎么能调用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 = {
    ...
};

两种方法都做同样的事情;你想使用哪一个是个人喜好的问题,以及你认为它们的可读性如何。

functionTwo中,这是指对象。因此,如果保存引用,可以像这样调用该函数:

var obj = (function (){
   return{
     functionOne: function(){},
     functionTwo: function(){
        var o = this;
        $("#div").rotate({
           callback: function(){
              o.functionOne(); // this does work
           }
        })
     }
   }
}());