2

script# に 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] に置き換えます。

This プロパティのようなものを Script クラスに配置して、0.8 が完成したときにすぐに使用できるようにしたいと考えています。

于 2012-11-06T20:13:56.173 に答える