Как передать сам объект (например, как мы можем это сделать в C #) в mootools? - PullRequest
0 голосов
/ 15 марта 2012

Я хотел бы знать, как передать себя другому объекту в mootools, Я пытаюсь создать классы, основанные на объявлении класса mootools, но я замечаю, что не могу отправить сам объект, используя это, когда я использую это, он отправляет DOMWindow вместо World или сам объект, ниже мой код,

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, может кто-нибудь мне помочь?

1 Ответ

2 голосов
/ 15 марта 2012
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, вы должны сохранить эту ссылку в переменной.

...