this指向 改變this指向

2021-09-26 10:40:12 字數 1168 閱讀 6393

常見的this指向:

常見的this指向

全域性下的this指向window

函式中的this,誰呼叫指向誰

建構函式中的this指向建構函式的物件

物件中的this預設指向當前物件

事件處理函式中this誰觸發指向誰 (指向觸發事件的目標元素)

定時器函式, this 指向 window

箭頭函式中沒有this,但是箭頭函式**現this就去父域中找父域this指向誰就指誰

函式預編譯過程中,this指向window

區分this使用時指向問題:

- 第一步:看this在**

全域性this指向window

- 第二步:區分在什麼函式中

function函式:1)事件處理函式:this指向觸發事件的物件

2)建構函式:this指向建構函式建立的物件

- 有 ----> this指向引數一物件

- 無 ----> 誰呼叫指向誰

注意:this.*** = nnn 可能是重新賦值 或 新增屬性

當乙個物件需要呼叫其他物件的函式時,可以通過 fun.call() 實現,fun是方法名。

call(引數一,引數二,、、、):

引數一:表示函式的擁有者,讓誰呼叫函式

從第二個引數開始,依次是呼叫函式時需要傳遞的引數

與 call() 用法相似,區別是引數傳遞方式不同

call(引數一,[引數二]):

引數一:表示函式的擁有者

引數二:是乙個陣列,把需要傳遞的引數放入陣列中

fun.bind() 會建立乙個新的函式,新的函式和原函式功能相同

新的函式和原函式區別:兩個方法中的 this 指向不同,bind() 方法通過第乙個引數指定了函式呼叫者(this的指向)

bind(引數一,引數二,、、、):

引數一:bind() 第乙個引數傳遞誰,this指向誰

從第二個引數開始,是呼叫方法所需要的引數

區別

相同點:都是【函式物件】中屬性,改變【函式中】this指向

this指向 改變this指向

function a a 此處相當於window.a 這僅是我個人的理解 在這個 中我們可以看出在 的結尾是由window來呼叫的函式a,那麼這個時候this指向window,this.user,全域性中沒有user,所以先定義了,但是沒有賦值,所以列印出undefined this指向練習二 va...

改變this指向

實現new完整版 function fn name,age fn.prototype.say function var obj1 newfn 高 18 console.log obj1 obj1 自己模擬 var obj 建立對fn.call obj,gao 19 改變建構函式的this 指向 指向...

改變this指向

改變this的指向 call 方法 bind方法 new關鍵字 區別在普通函式中,this指向window 在建構函式中,this指向建立的物件 在方法宣告中,this指向呼叫者 在定時器中,this指向window 在事件中,this 指向事件源 this 指向了觸發事件的 dom 元素本身 全域...