Javascript Linq.js作用域

Javascript Linq.js作用域,javascript,linq.js,Javascript,Linq.js,我被以下情况困住了。我有一个select语句,它使用当前作用域中的函数me。如何将me放入选择功能 var me = this; var results = Enumerable .from(jsonData) .select('x,i=>{abbr:me.transform(x), name:x}') .toArray(); //me.transform(x) will hit error “me”是

我被以下情况困住了。我有一个select语句,它使用当前作用域中的函数
me
。如何将
me
放入选择功能

var me = this;
var results = Enumerable
              .from(jsonData) 
              .select('x,i=>{abbr:me.transform(x), name:x}')
              .toArray(); //me.transform(x) will hit error
“me”是动态生成的对象的实例,而
me.transform(x)
也使用“me”中的其他依赖项来工作。这意味着我不能使“me.transform()”成为全局函数


编辑


实际上,这个修改会起作用,但是,我想知道如何使快捷语法起作用。

我的错。这就是你的意思吗

var me = this;
var results = Enumerable
          .from(jsonData) 
          .select('x,i=>{abbr:' + me.transform(x) + ', name:x}')
          .toArray(); //me.transform(x) will hit error

可以做的是将对象投影到一个复合对象,该复合对象包含集合中的项和要引入查询的对象

您可以使用此
Capture
函数来捕获变量:

function Capture(bindings, name) {
    var benumerable = Enumerable.From(bindings),
        itemname = name || 'Item';
    return function (e) {
        return e.Select(function (item) {
            return benumerable.Concat(Enumerable.Return({ Key: itemname, Value: item }))
                .ToObject("$.Key", "$.Value");
        });
    };
}
Let
绑定中使用它

var query = Enumerable.From(data)
    .Let(Capture({ Me: me }))
    .Select("{ abbr: $.Me.transform($.Item), name: $.Item }")
    .ToArray();

变量“me”中有什么?只是一根绳子吗?它的用途是什么?抱歉,但它不起作用,因为您将参数(x)拖出,而x现在从引用的“x,i=>…”上下文中不知从何而来。我想这个技巧更具体地体现在Linq.js是如何形成其快捷语法的。请看我的编辑。
var query = Enumerable.From(data)
    .Let(Capture({ Me: me }))
    .Select("{ abbr: $.Me.transform($.Item), name: $.Item }")
    .ToArray();