Wie kann ich dem globalen Objekt in Rhino-JavaScript eine Objekteigenschaft hinzufügen?

7

Ich habe einige Eigenschaften in einem Objekt, das ich dem globalen Namespace hinzufügen möchte. In Javascript im Browser könnte ich es einfach zum window -Objekt wie folgt hinzufügen:

%Vor%

Aber da Rhino nicht das globale Fensterobjekt hat, kann ich das nicht tun. Gibt es ein äquivalentes Objekt oder eine andere Möglichkeit, dies zu erreichen?

    
timdisney 22.07.2009, 04:01
quelle

5 Antworten

7

Sie könnten this verwenden, was sich auf das globale Objekt bezieht, wenn die aktuelle Funktion nicht als Methode eines Objekts aufgerufen wird.

    
Miles 22.07.2009, 04:14
quelle
10

Ich fand eine ziemlich brillante Lösung bei NCZOnline :

%Vor%
  

Der Schlüssel zu dieser Funktion ist, dass das Objekt immer auf das globale Objekt zeigt, wenn Sie call() oder apply() verwenden und Null als erstes Argument übergeben. Da ein Nullbereich nicht gültig ist, fügt der Interpreter das globale Objekt ein. Die Funktion verwendet eine innere Funktion, um sicherzustellen, dass der Bereich immer korrekt ist.

Anruf mit:

%Vor%

glob gibt dann [object global] in Rhino zurück.

    
pnewhook 23.03.2010 18:59
quelle
5

So habe ich es in der Vergangenheit gemacht:

%Vor%     
edsoverflow 22.07.2009 04:33
quelle
1

Sie könnten einfach Ihr eigenes Objekt window als Variable auf oberster Ebene definieren:

%Vor%

Sie können dann nach Belieben Werte zuweisen. (" window " ist jedoch in dieser Situation wahrscheinlich nicht der beste Variablenname.)

Siehe auch: Kann ich ein 'window'-Objekt für Javascript erstellen, das in der Java6 Rhino Script Engine ausgeführt wird

?     
harto 22.07.2009 04:17
quelle
-1

Ich habe kein Rhino benutzt, aber könntest du nicht einfach var benutzen?

d.

%Vor%

Bearbeiten: Verdammt wusste, dass es einen Haken geben würde! Miles Vorschlag würde in diesem Fall gehen.

    
rezzif 22.07.2009 04:05
quelle

Tags und Links