目前我有这样的想法:
public class MyObject extends ScriptableObject {
@Override
public String getClassName() {
return "MyObject";
}
// define static properties
public static void finishInit(Scriptable scope, FunctionObject ctor, Scriptable proto) {
ctor.defineProperty("PROP_ONE", 1, READONLY);
ctor.defineProperty("PROP_TWO", 2, READONLY);
ctor.defineProperty("PROP_THREE", 3, READONLY);
}
还有其他方法吗?这种方式正确吗?
重要提示:请注意,在调用finishInit时, MyObject的构造函数尚未在范围内定义。为了定义静态属性,即MyObject的实例,请使用以下语法:
public static void finishInit(Scriptable scope, FunctionObject ctor, Scriptable proto) {
Context cx = Context.getCurrentContext();
Scriptable myObjectInstance = ctor.construct(cx, scope, new Object[] { /* args */ });
ctor.defineProperty("PROP", myObjectInstance, READONLY);
....
}