我一直在查看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;
}
}
我是否走在正确的道路上?提供一步一步的指南将会非常有帮助。
如果我能使用Rhino的defineClass
函数来创建全局本地函数,那就太好了。我不太想推出自己修改过的Rhino版本,只是因为我想实现一个本地函数。
scope
是全局作用域,对吗?我应该在哪里实例化它,如何访问scope
?我看到RingoGlobal
有一个叫做init
的方法。 - Aadit M Shah