當我們宣告乙個函式fun時,函式fun具有的屬性、方法如下:
//屬性(常見)
1.name
2.length
3.arguments(物件,arguments.callee)
4.caller
5.this
6.prototype
7.[[prototype]]
//方法(常見)
1.call()
3.bind()
4.tostring()
由於經常使用this物件,加之this指向常常容易混淆,所以有必要梳理下;關於this指向,應記住這句話:
哪個物件(上下文)呼叫了函式,這個函式中的this就指向誰;如果沒有物件呼叫,this預設指向window(非嚴格模式下);
this的指向跟函式在哪個作用域定義沒有任何關係;只跟誰呼叫了它有關;
var name = "hello outside";var obj =
a();
settimeout(
function
(),1000)
} };obj.getinfo();
當obj.getinfo()執行時,是obj物件呼叫了getinfo();
@1 函式執行到這裡時,由於obj呼叫了getinfo(),因此this指向obj
@2 在執行此處時,沒有物件呼叫a函式,預設情況下this指向window(非嚴格模式下,嚴格模式時指向undefined)
@3 執行此處時,定時器中this指向window(不管是嚴格還是非嚴格模式下,定時器中**函式都指向window)
如果有時候編寫閉包的方式不同,不容易分辨this指向;
var name = "hello outside";var obj =
} };obj.getinfo()();
此時控制台列印的結果是:「window」,原因是,執行obj.getinfo()返回乙個函式,然後再執行這個匿名函式,由於沒有任何物件呼叫這個函式,因此預設情況下this指向window;
再來看乙個例子:
var name = "hello outside";var objone =
};var objtwo =
};objone.getinfo().getinfo();
控制台列印的是 objtwo 物件;
首先: 執行objone.getinfo()時,返回的是objtwo物件
接著:objtwo物件呼叫了getinfo函式,因此this指向objtwo物件
定時器**函式、事件處理程式中的this
預設情況下,定時器**函式中的this指向window物件(瀏覽器中);事件處理程式中的this指向dom物件;
//定時器 **函式 this-->window
settimeout(function
(),1000)
//事件處理函式 this
document.addeventlistener('click',function
())
參考:[1] 別再為了this發愁了
[2] 掌握js中的this
C this指標 1 this介紹
目錄 1.區分同名變數 2.返回物件的引用 3.關於this指標的注意事項 3.1不能賦值 3.2靜態函式中沒有this 3.3小心地delete this c 中的this指標,在所有非靜態成員函式的呼叫中做為乙個隱藏引數進行傳遞,並且在函式體中可以做為乙個區域性變數使用。this是乙個const...
指向函式的指標 1
先來看乙個函式 cpp view plain copy intsum inta,intb 這個函式,呼叫方式可以如 sum 1,2 若要表示函式的指標,可以用 sum,也可以將sum前邊的位址操作符 去掉,對於普通函式,位址操作符 是可選的。下面介紹函式指標變數和函式指標型別 1.函式指標變數 cp...
面試常見問題 1 this的常見問題
this 的含義 this關鍵字是乙個非常重要的語法點。毫不誇張地說,不理解它的含義,大部分開發任務都無法完成。前一章已經提到,this可以用在建構函式之中,表示例項物件。除此之外,this還可以用在別的場合。但不管是什麼場合,this都有乙個共同點 它總是返回乙個物件。簡單說,this就是屬性或方...