在javascript中调用另一个类函数中的类函数

时间:2013-09-02 09:41:21

标签: javascript oop

我想在刷新功能中调用posts()。 这是我的代码。

var TIMELINE = TIMELINE || (function (){

    /*** private ***/
    var _args = {};
    var self = this;

    return {

        init : function(Args){
            _args = Args;
        },  // init
        posts : function(data) {

            alert('posts called');

        },  // posts
        unsetMarkers : function() {

            alert('unsetMarkers called');

        },   // unsetMarkers
        refresh :   function(){
            self.posts;
        }

    };


}());

问题出在这一行self.posts; 我也试过self.posts({'data':'success','another':'thing'}); 如何在刷新时使用帖子?

2 个答案:

答案 0 :(得分:2)

您的代码中存在两个问题:

  • self不引用具有属性posts的对象,即不引用从函数返回的对象。您有var self = this;this引用window(假设为非严格模式)。
  • 您甚至没有尝试调用该功能。

不是立即返回对象,而是将其分配给self

// instead of `var self = this;`
var self = {
   // function definitions
};

return self;

然后你可以用

调用方法
self.posts(); // note the parenthesis after the function name

如果您确定refresh函数总是被称为TIMELINE.refresh()(即作为TIMELINE对象的方法),那么您也可以使用

调用posts方法
this.posts();

忘了self


进一步阅读材料:

答案 1 :(得分:0)

refresh :   function(){
    this.posts();
}

JSFIDDLE