this指向問題

2022-08-20 16:33:11 字數 456 閱讀 3772

1.函式呼叫模式:fn() 這裡的this指向window

2.方法呼叫模式:obj.fn( ) this指向呼叫者,誰呼叫,就指向誰

3.構造函式呼叫模式:new person()this指向新建立的例項

4.上下文呼叫模式:call()-----任何函式都可以看成乙個特殊的物件,也可以設定屬性和方法,都有乙個call方法

call方法也可以用於呼叫函式,還可以指定函式執行的this指向

語法:fn.call(this指向,x,y,z) 

bind()----任何函式都有乙個bind方法,作用:複製乙個新函式,並且將新函式的this固定死指向傳入的this的值

語法:var newfn=fn.bind(this指向)==》只是改變了新函式newfn的指向,fn的並沒有改變

5.定時器中的this指向window

6.事件處理函式中,瀏覽器讓this指向了事件源

this指向問題

一 this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件 例項一 函式this指向 function a a undefined windowwindow.a undefined window 解釋 這裡的a函式指向的...

this指向問題

在普通的函式中this指向window 在定時器中指向window,其實普通的函式和定時器都是window下的方法,所以都指向window 在乙個物件中的方法中this批向當前物件 new了 綁事件是事件源 真正觸發的 function fn a,b var aa fn.call 普通模式下this...

this指向問題

但是有時候這樣的判斷並不準確,可以按照如下規則進行判斷。瀏覽器環境 無論是否在嚴格模式下,在全域性執行環境中 在任何函式體外部 this 都指向全域性物件window node 環境 無論是否在嚴格模式下,在全域性執行環境中 在任何函式體外部 this 都是空物件 如果是new繫結並且 建構函式返回...