2

我正在用脚本# 编写 javascript。我想写一个看起来像的函数

function myFunc()
{
    if(this.value > 100)
          return true;
    else
          return false;
}

可以使用具有属性“值”的任何实例调用此函数。

如何在 Script# 中编写此函数?在 Script# 中,生成的 javascript 代码似乎正在对 this 进行本地引用,并且当某些其他对象作为“this”传递时不起作用。

4

1 回答 1

1

这类似于能够在 jQuery 回调函数中引用“this”。例如,请参阅 jQuery 类的 Current 属性(https://github.com/nikhilk/scriptsharp/blob/cc/src/Libraries/jQuery/jQuery.Core/jQuery.cs)。

具体来说,如果你这样写:

[ScriptImport]
public static class Global {

    [ScriptField, ScriptAlias("this")]
    public static object This {
        get { return null; }
    }
}

然后你可以这样写:

public static class MyCode {

    public static bool MyFunction() {
         return (Script.GetField<int>(Globals.This, "value") > 100);
    }
}

当然,您也可以编写导入的类以返回一个强类型类(再次参见 jQuery 示例),这样就可以在不使用 Script.GetField 的情况下编写 MyFunction。

上面的代码假定使用 script# 0.8 API(您可以从 github 上的项目下载页面获取)。对于以前的构建,将 [ScriptImport] 替换为 [Imported],将 [ScriptField] 替换为 [IntrinsicProperty]。

我希望在 Script 类中放置类似 This 属性的内容,以便在 0.8 最终确定时可以立即使用它。

于 2012-11-06T20:13:56.173 回答