2

クラスメンバー関数にアクセスする必要がある場合、JS クラス内でthisへの参照を保持する必要があることを知っています。ただし、現在、次の(簡略化された)コードに苦労しています。

function MySimpleClass(p, arr) {
this.proxy = p;
this.contentArray = arr;

this.doStuff = function(callback) {
    var self = this;

    // at this point this.contentArray holds data

    this.proxy.calculate(function(data) {

        // inside the anonymous function this.contentArray is undefined

        var el = self.contentArray[0]; // <-- will fail
        // do something with el

        callback.call(this, data); 
    });
}}

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

4

2 に答える 2

1

クラスを使用したこのサンプル コードは機能しています。

var c = new MySimpleClass({calculate: function(f) {f()}}, [1,2]);
c.doStuff(function(){alert("hi");})

プロキシ クラス自体に "self" 変数も定義したため、コードが機能していないと思います。クラスの「self」の名前を任意の名前「selfXXX」に変更することで確認できます。

于 2012-05-09T12:33:27.017 に答える
0

'data'だけを送信するのではなく、この無名関数のパラメーターとしてcontentArrayを送信するのはどうですか?

于 2012-05-09T12:38:06.840 に答える