0

John Resig のクラス継承 (JavaScript 用) script を使用しています。継承可能な「クラス」を定義できます。1 つの制限が見つかりました。ネストされた関数内からクラス構造/基本クラス (this) を参照することはできません。

例えば

var myclass = anotherclass.extend({ 
    dostuff: function() {
        $('#myelem').animate({ top: 100 }, function() { this.saystuff('Done'); });
    },

    saystuff: function(Message) {
        alert(Message);
    }
});

var foo = new myclass();
foo.dostuff();

スクリプトがコールバックを呼び出すと、コールバックが呼び出され、コールthis.saystuffバックをラップしている名前のない関数のメソッドを呼び出そうとするため、一連の関数を呼び出すことができません。

これを回避するために私が見つけた唯一の方法は、オブジェクトを作成した変数を呼び出すことですが、その変数名はいつでも変更できるはずなので、それは良い考えではありません。

どんな助けでも大歓迎です。

4

2 に答える 2

4

対象外です。

dostuff: function() {
   var that=this;
    $('#myelem').animate({ top: 100 }, function() { that.saystuff('Done'); });
},

プロキシを持つjQueryを使用しているようです

dostuff: function() {
    $('#myelem').animate({ top: 100 }, $.proxy(this, this.saystuff, 'Done'); });
},
于 2013-05-14T02:13:03.360 に答える