參考這裏javascript
http://javascript.info/tutorial/thishtml
當對象調用方法時,obj.func()的時候,func裏面的this就是obj自身,比方說
java
var obj = {瀏覽器
variable1 : "aaa",ui
variable2 : "bbb",this
method1 : function(param1){this.variable1 = param1;},spa
method2 : function(param2){this.variable2 = param2; htm
this.method1(param2);},對象
method3 : function(){alert(this);}ip
};
alert(obj.variable1);
alert(obj.variable2);
obj.method1("aabbcc");
alert(obj.variable1);
obj.method2("bbccdd");
alert(obj.variable1);
alert(obj.variable2);
obj.method3();//object Object
var func1 = obj.method3;
func1(); //object Window
obj.method3(); 和 var func1 = obj.method3; func1(); 表面上差很少,結果卻不一樣。
換個比較準確點的說法,對於瀏覽器來講,obj擁有着method3,因此obj.mehod3裏面的this就是擁有者obj;擁有func1的是Window Object,當func1被調用是,this就是擁有者Window了。
javascipt在和html元素協做的時候 ,也存在 擁有者是誰的問題 ,要徹底區分彷佛 不可能 ,知道有這種 狀況就好。參見