独自のグローバル ネイティブ関数を実装する方法の手がかりとして、Rhino のドキュメントとソース コードを調べてきました。しかし、この作業は私が予想していたよりも複雑です。
RingoJSの関数の実装のコードを読んだ後、次の行に沿って何かを行う必要があると思います。require
import org.mozilla.javascript.BaseFunction;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.Context;
public class MyGlobalNativeFunction extends BaseFunction {
public MyGlobalNativeFunction() {}
public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
// implementation of my function
}
public int getArity() {
return 1;
}
}
私は正しい軌道に乗っていますか?これを達成する方法についての段階的なウォークスルーは素晴らしいでしょう。
defineClass
また、Rhino の関数を使用してグローバル ネイティブ関数を作成できれば素晴らしいと思います。1 つのネイティブ関数を実装したいという理由だけで、Rhino の独自の修正バージョンをロールアウトすることにあまり熱心ではありません。