8
votes

Comment puis-je ajouter une propriété d'objet à l'objet global dans Rhino JavaScript

J'ai des propriétés dans un objet que j'aimerais ajouter à l'espace de noms global. En JavaScript sur le navigateur, je pouvais simplement l'ajouter à la fenêtre comme: xxx

mais depuis que Rhino n'a pas l'objet de la fenêtre globale que je ne peux pas fais ça. Y a-t-il un objet équivalent ou une autre façon d'accomplir cela?


1 commentaires

J'ai compris comment le faire sans avoir à écrire un supplément JavaScript: Stackoverflow.com/a/60783337/473201


5 Réponses :


-1
votes

Je n'ai pas utilisé Rhino mais que vous ne pouviez pas utiliser Var?

I.e. P>

var foo = myObject.foo;
foo();


3 commentaires

Hah! Trop simple pour moi :) Merci!


Ah, attends ... voici mon vrai problème. Je veux faire cela par programme. Je ne connais pas vraiment les noms des propriétés de l'objet avant la main.


Cette réponse est malheureusement juste un fouillis, comme tel pourrait-il être supprimé? Pas d'émotions fortes!



7
votes

Vous pouvez utiliser ceci , qui fait référence à l'objet global si la fonction actuelle n'est pas appelée comme méthode d'objet.


2 commentaires

fenêtre var = ceci; Au tout début du script m'a aidé. Voir le script ENV.JS par JOHN RESIG ejohn.org/blog/ apporter-le-navigateur-à-serveur


@Miles, Hmm, ne pensez-vous pas que la solution de Pnewhook est meilleure?



1
votes

Vous pouvez simplement définir votre propre objet objet en tant que variable de niveau supérieur: xxx

Vous pouvez ensuite affecter des valeurs à votre guise. (" fenêtre " n'est probablement pas le meilleur nom de variable dans cette situation, cependant.)

Voir aussi: puis-je créer une" fenêtre "objet pour JavaScript en cours d'exécution dans le script de rhinocéros Java6 Moteur


0 commentaires

5
votes

Voici comment je l'ai fait dans le passé:

// Rhino setup
Context jsContext = Context.enter();
Scriptable globalScope = jsContext.initStandardObjects();

// Define global variable
Object globalVarValue = "my value";
globalScope.put("globalVarName", globalScope, globalVarValue);


1 commentaires

Pourquoi ne pas simplement utiliser ceci ?