javascript學習記錄(三)-this物件的深入理解
阿新 • • 發佈:2019-02-20
this 物件是基於執行的環境而決定的,this物件分為兩類(本人認為的):全域性this以及區域性this。
全域性this我們通常是指向Windows的,區域性this是指向函式內部的。但是也有特殊的情況-閉包。如下程式碼
'use strick';
var name = "mainJhone";
var obj = {
name:'jhone',
pubFunction:function(){
return function(){
return this.name;
}
}
};
alert(obj.pubFunction()()); // mainJhone
其他的都好懂,就是return的這個匿名函式(簡單理解就是沒有函式名稱,沒名字的函式體),大家一定很奇怪為什麼沒有取到包含作用域中的this物件。內部函式在搜尋執行的時候當搜尋到其活動物件的時候就會終止搜尋,永遠不會訪問到外部函式中的變數。對於匿名函式來說,他是一個未定義的匿名函式。沒有指定型別的物件和變數在javascript中非嚴格模式下是全域性變數物件(javascript
一切皆為物件);因此就當做了全域性物件來處理,this指向的是windows。因此獲取的name 是全域性變數"mainJhone"