質問: context[(NSString)"hoge"]; // hoge.positionを出力 Console.WriteLine(hoge[(NSString)"position"].ToString()); // hoge.updateの呼び出し hoge.GetProperty("update").Call(); // 変更後のhoge.positionの出力 Console.WriteLine(hoge[(NSString)"position"].ToString()); ``` 期待している出力結果は、 ``` [0,0,0] [1,0,0] ``` なのですが、実際は ``` [0,0,0] [0,0,0] ``` のように何も変更されていません。 `update`の呼び出し方はJSValue.Call(JSValue[]) Methodを参考にしました。 気になって`update`の中身を`return this.position;`に書き換えると結果は`undefined`。 さらに書き換えて`return this;`とするとグローバルオブジェクトが返ってきました。 JavaScriptでメソッド呼び出す場合、thisにはメソッドを持っているオブジェクトが入るはずですよね? メソッド呼び出しの仕方が間違えているのかもしれません。 原因を知りたいです。
回答: これを書きながら並行して調べてたらJSValueクラスにはどうやら`Invoke`メソッドなるものが存在した...。 JSValue.Invoke(String, JSValue[]) Method これを以下のように使うと、 ``` hoge.Invoke("update"); ``` 次のように期待した結果が出ました!! ``` [0,0,0] [1,0,0] ``` メソッド内で`this`を使う場合は呼び方に気をつけないといけないですね。