Portée de variable et this
Bonjour,
Pour comprendre un peu comment fonctionnait la portée des variables, j'ai fait ce petit programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
var msg = "tutu";
var myObj = {};
myObj.func1 = function(func){
var msg = "msg2";
var myThis = this;
alert("[myObj.func1] this1: " + this); // this correspond bien a myObj
setTimeout(
function(){
alert("[myObj.func1.setTimeout] this2: " + this);
func(msg);
//this.func1(func); // ne fonctionne pas (this correspond a Window)
myThis.func1(func);
},
1000
);
}
myObj.func1(
function(msg2){alert("message1: " + msg2 + ", this3: " + this);}
);
myObj.func1(
function(msg2){alert("message2: " + msg2 + ", this3: " + this);}
); |
Dans setTimeout(function{...}), les variables func et msg correspondent bien aux variables qui sont visibles depuis myObj.func1() mais pourquoi alors ce n'est pas le cas pour this ? ... this correspond a l'objet Window et non pas à myObj
En espérant que ma question a été clair ...
Merci d'avance,