Bonjour,

Pour comprendre un peu comment fonctionnait la portée des variables, j'ai fait ce petit programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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,