Questa è la stessa linea della domanda dal titolo "Capturing Nashorn's Global Variables". Trovo molto limitante non poter intercettare l'assegnazione di variabili all'oggetto globale.Accesso/intercettazione delle variabili oggetto globali di Nashorn
Ad esempio, supponiamo di evalidare lo script "a = 10". Forse voglio chiamare un ascoltatore per notificare qualcosa che "a" è stato aggiunto all'ambito. L'unico modo per farlo è investigare l'oggetto globale dopo che lo script è stato valutato.
Oppure dire che voglio intercettare un oggetto assegnato all'ambito globale e sostituirlo con un altro; se stava usando Bindings
ho potuto implementare put
, e delegare fuori ad alcuni altri attacchi:
public Object put(String name, Object value) {
//put a toStringed version of the object in scope
return delegate.put(name, value+"");
}
In questo modo, quando viene evalled il codice 'a = 10', sarebbe mettere "10" in ambito invece di 10
È utile avere un'interfaccia Bindings
da implementare, ma è frustrante non poter fornire qualcosa come questa implementazione per l'oggetto globale. ScriptObjectMirror
è definitivo, quindi non posso nemmeno sovraccaricare questo e dirottare la chiamata successiva al numero interno ScriptObject
. Mi sto perdendo qualcosa?