0

mootoolsで他のオブジェクトに自分自身を渡す方法を知りたいのですが、mootoolsクラス宣言に基づいてクラスを構築しようとしていますが、これを使用すると、Worldの代わりにDOMWindowを送信するため、これを使用してオブジェクト自体を送信できないことに気付きましたまたはオブジェクト自体、以下は私のコードです、

var World = new Class({
        ....

        initialize: function(rows, ...) {
            // build grass // can only have one grass per location
            this.grassList = Enumerable.Range(0, rows).SelectMany(
                function(row) {
                    return Enumerable.Range(0, columns).Select(
                        function(column) {
                            return new Grass(this, new Location(row, column), quantityOfGrass, maxQuantityOfGrass, growRateOfGrass)
                        })
                }).ToArray();
        }
        ....
}

私はこの場所で問題に直面しています、

return new Grass(this, new Location(row, column), quantityOfGrass, maxQuantityOfGrass, growRateOfGrass)

それが機能しなかったので、私はチェックしました、

return new Grass(World, new Location(row, column), quantityOfGrass, maxQuantityOfGrass, growRateOfGrass)

linq.jsとmootoolsを使用している場合も機能しませんでした。誰かが私を案内してくれますか?

4

1 に答える 1

2
var World = new Class({
        ....

        initialize: function(rows, ...) {
            // save a reference to the correct "this"
            var self = this;
            // build grass // can only have one grass per location
            self.grassList = Enumerable.Range(0, rows).SelectMany(
                function(row) {
                    return Enumerable.Range(0, columns).Select(
                        function(column) {
                            return new Grass(self, new Location(row, column), quantityOfGrass, maxQuantityOfGrass, growRateOfGrass)
                        })
                }).ToArray();
        }
        ....
}

によって参照されるオブジェクトthisは動的に変化します。

あなたのようなコールバック関数は、以前に呼び出された関数で参照されてfunction(column)いるものについて何も知りません。this特定の への参照を再利用する場合は、thisその参照を変数に保存する必要があります。

于 2012-03-15T08:23:15.667 に答える