В данный момент у меня на уме нечто подобное:
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);
}
Есть ли другие способы? И так ли это правильно?
ВАЖНО: обратите внимание, что конструктор для MyObject еще не определен в области, когда вызывается finishInit . Чтобы определить статические свойства, которые являются экземплярами 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);
....
}