0

更新機能で 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'}); ました更新で投稿を使用するにはどうすればよいですか?

4

2 に答える 2

2

コードには 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ます。


参考資料:

  • MDN -thisthis :さまざまなコンテキストでどの値が存在するかを学習します。
  • Eloquent JavaScript - 関数: 関数がどのように機能するかを学びます。
于 2013-09-02T09:45:41.947 に答える
0
refresh :   function(){
    this.posts();
}

JSFIDDLE

于 2013-09-02T09:47:02.777 に答える