this指向

this指向的7個規(guī)則,騰訊課堂考拉老師哪里學(xué)到的,收益頗深;

規(guī)則:
1.函數(shù)直接用 圓括號() 運行,上下文是window對象;

fn(); // 此時this指向的是window;

2.對象打點調(diào)用函數(shù),上下文是這個對象;

obj.fn();  // 此時this指向的是obj;

3.數(shù)組(類數(shù)組對象)中枚舉出函數(shù),上下文是這個數(shù)組(類數(shù)組對象);

// arr[index](); // 這時候this指向的是arr;
function fun1(fn){
    arguments[0](3,4); // arguments[] = fun2 運行時fun2的this指向arguments;
}
function fun2(){
    alert(this.length); // 這時候這個this指向的是fun1 的arguments
}
fun1(fun2,4,5,6,7); // 5

4.定時器調(diào)用函數(shù),上下文是window
5.被當(dāng)做事件處理函數(shù)時,上下文是觸發(fā)事件的DOM元素

dom.onclick = function(){
    alert(this.innerHTML)  // 此時this指向的是dom
}

6.用new調(diào)用函數(shù),上下文是函數(shù)內(nèi)創(chuàng)建的空白對象;
用new調(diào)用函數(shù)會經(jīng)過4步;
①創(chuàng)建一個空對象(這一步很隱秘,看不到)
②將this綁定到這個秘密創(chuàng)建的空對象中
③執(zhí)行語句
④返回對象

7.用apply、call、bind執(zhí)行上下文;

fn.apply(obj,[a,b,c,d]);
fn.call(obj,a,b,c,d);
fn.bind(obj);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容