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,
Partager