var?name?=?"window";
var?object?=?{
????name:?"My?Object",
????getNameFunc:?function(){
????????return?function(){
????????return?this.name;
????????????};
????????}
???};
alert(object.getNameFunc()());??//"window"var?name?=?"window";
var?object?=?{
????name:?"My?Object",
????getNameFunc:?function(){
????????var?that?=?this;
????????return?function(){
????????return?that.name;
????????};
????}
};
alert(object.getNameFunc()());??//My?Obect先來個經典的例子,首先那個第一個this是怎么變成全局對象的?在JS高級程序設計中這樣解釋:每個函數在被調用時,其活動對象都會自動取得兩個特殊變量:this 和 arguments。內部函數在搜索這兩個變量時,只會搜索到其活動對象為止,因此永遠不可能直接訪問外部函數中這兩個變量。只會搜索到活動對象這個是明白的,再往下就不懂了。。。
今天看到閉包,被this搞蒙了,求解答。。。
comlejade
2015-12-07 16:09:01