Comment puis-je exécuter une fonction JavaScript/morceau de code dans un contexte spécifique qu'il verrait comme un contexte global? Ce n'est pas la même chose que de changer ceci (appel/application), c'est plus comme changer la 'fenêtre'.JavaScript: exécuter du code dans un contexte spécifique
En fait, si je le code suivant:
(function() { x.value = 5; return value; })()
est-il un moyen de le faire fonctionner (retour 5) sans modifier le code lui-même?
De même, l'exécution de code dans le contexte de x (si possible) est ma première idée, mais peut-être y a-t-il une autre solution?
MISE À JOUR:
problème original: Je suis en train de tester un bookmarklet en utilisant le sélénium. Bookmarklet suppose qu'il peut faire
window.SomeObject = {...}; SomeObject.doSomething();
je reçois le bookmarklet de la page et l'exécuter à l'aide de selenium.get_eval $, et dans le contexte de l'objet global get_eval est un objet lui-même du sélénium, pas la fenêtre. window.SomeObject
fonctionne toujours parce que le contexte de sélénium a la fenêtre, mais juste SomeObject
ne fonctionne pas.
Je pense que je connais une autre solution possible, mais j'aimerais savoir s'il y a une réponse à la question originale.
MISE À JOUR 2 (solution):
solution finale (fonction de la réponse par geowa4):
x = {}; with(x) { return (function() { x.value = 5; return value; })(); }
pourriez-vous s'il vous plaît expliquer ce que vous essayez de faire exactement? – dusoft
Tout d'abord, vous définissez 'x.value' mais vous ne retournez que' value', donc votre code * * ne renverra pas 5 ". Deuxièmement, quoi? –
ajouté une explication à la fin de la poste –