JeuWeb - Crée ton jeu par navigateur
Comment déterminer ou récupérer le contexte d'execution en JS? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Comment déterminer ou récupérer le contexte d'execution en JS? (/showthread.php?tid=1068)



Comment déterminer ou récupérer le contexte d'execution en JS? - Argorate - 08-05-2014

Bonjour,

comment peut-on récupérer le contexte dans lequel on se trouve en JS?

Exemple: comment différencier ces deux codes :


var toto = function test(){console.log("CONTEXT = ...');};
toto();

et



(function(){
var toto = function test(){console.log("CONTEXT = ...');};
toto();
})();

Comment savoir si on est dans une scope ou dans le contexte général?


RE: Comment déterminer ou récupérer le contexte d'execution en JS? - Maks - 08-05-2014

this === window || global ?


RE: Comment déterminer ou récupérer le contexte d'execution en JS? - niahoo - 08-05-2014

hmm dans ses deux bouts de code, this correspond à window il me semble bien.


RE: Comment déterminer ou récupérer le contexte d'execution en JS? - Argorate - 08-05-2014

oui, this est toujours égal à window, c'est bien le problème... ça ne permet pas de distingué le contexte.


RE: Comment déterminer ou récupérer le contexte d'execution en JS? - Xenos - 08-05-2014

Via "arguments.callee.caller":


var x = true;
var toto = function test()
{
console.log(
"CONTEXT = ", (arguments.callee.caller == null? 'global': 'local')
,"This = ", this
,"x = ", x
,"arguments=", arguments
,"callee=", arguments.callee
,"caller=", arguments.callee.caller
);
};
toto();

(
function()
{
var tatati = function test()
{
console.log(
"CONTEXT = ", (arguments.callee.caller == null? 'global': 'local')
,"This = ", this
,"x = ", x
,"arguments=", arguments
,"callee=", arguments.callee
,"caller=", arguments.callee.caller
);
};
tatati();
}
)();

Citation :CONTEXT = global This = Window contexte.html x = true arguments= [] callee= test() caller= null
CONTEXT = local This = Window contexte.html x = true arguments= [] callee= test() caller= function()

A adapter si besoin.


RE: Comment déterminer ou récupérer le contexte d'execution en JS? - Argorate - 08-05-2014

Génial ça. merci bien Wink