如何在mootools中传递对象本身(就像我们在C#中可以做的那样)?

如何在mootools中传递对象本身(就像我们在C#中可以做的那样)?,c#,javascript,json,mootools,object-initializers,C#,Javascript,Json,Mootools,Object Initializers,我想知道如何将self传递给mootools中的其他对象, 我试图基于mootools类声明构建类,但我注意到我无法使用它发送对象本身当我使用它发送DOMWindow而不是World或对象本身时,下面是我的代码 var World = new Class({ .... initialize: function(rows, ...) { // build grass // can only have one grass per locati

我想知道如何将self传递给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,有人能指导我吗

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
的引用,你必须将该引用保存在一个变量中。

我尝试过在firebug和Google Chrome中签入时引用DOMWindow,即使我分配给self并传递给self,它仍然会引用DOMWindow对Lak的任何其他建议?@Kathy请参阅修改后的答案。我不确定要将哪个对象传递到
newgrass()
var self=this的位置很大程度上是一种猜测。
Grass()
期望的第一个参数是什么?Grass期望的是初始化的世界类我确实通过了世界,但这并不幸运,我尝试了您的建议将其分配给
self
并通过
self
,但也不幸运:(+1-这是正确的使用模式。您也可以通过
.bind(this)
来修饰函数,但是保存引用更快,占用空间更小。
…SelectMany(function(row){…return blah.Select(function(){}.bind(this))}.bind(this)).toArray();
-function.bind不是特定于mootools的,实际上它现在是标准的:-这在这里是不可取的,因为可读性恶化了很多,因为需要绑定两个函数,这样您就可以将
绑定到实例上了。。。