0

以下の状況で関数 c を呼び出すにはどうすればよいですか?? アドバイスありがとうございます。

    var Foo = function(el){}

    Foo.prototype.d = function(){ 
        // I want to call function c here, how can I do??
    };


    $.fn.a = function(){
        return { 
            b: new Foo(this)
       };
   };

   $.fn.a.prototype.c = function(){ alert(1); };  //function c

   $(el).a().b.d()   <-reach c... 
4

1 に答える 1

1

anew キーワードで構築された のインスタンスがありません。したがって、callまたはを使用する必要がありますapply

Foo.prototype.d = function(){ 
    $.fn.a.prototype.c.apply(this, arguments);
};

これはインスタンスで実行cされFooます。それでよろしいですか? 特定の実行コンテキストなしで関数を呼び出したいだけの場合は、 を使用できます$.fn.a.prototype.c()

これはおそらく、これを構築するための最良の方法ではありません。Foo のメンバー関数として呼び出したい場合は、 のメンバー関数として追加しないでください$.fn.a

于 2013-02-09T07:29:06.617 に答える