改變this指向

2021-10-18 18:58:34 字數 1227 閱讀 9956

改變this的指向

call()方法

bind方法

new關鍵字

區別在普通函式中,this指向window

在建構函式中,this指向建立的物件

在方法宣告中,this指向呼叫者

在定時器中, this指向window

在事件中,this 指向事件源(this 指向了觸發事件的 dom 元素本身)

全域性環境下,this就代表window物件,在 settimeout 或 setinterval 這樣的延時函式中呼叫也屬於全域性物件

如果乙個函式中有this,這個函式有被上一級的物件所呼叫,那麼this指向的就是上一級的物件。

如果乙個函式中有this,這個函式中包含多個物件,儘管這個函式是被最外層的物件所呼叫,this指向的也只是它上一級的物件

return的情況。如果返回值是乙個物件,那麼this指向的就是那個返回的物件,如果返回值不是乙個物件那麼this還是指向函式的例項

function.

(obj,args)方法能接收兩個引數

obj:這個物件將代替function類裡this物件

args:這個是陣列,它將作為引數傳給function(args--

>arguments)

function

bindthis

(f, otarget)

}

function.

call

(obj,

[param1[

,param2[

,…[,paramn]]]

])obj:這個物件將代替function類裡this物件

params:這個是乙個引數列表

function

bindthis2

(f, otarget)

}

function

bindthis3

(f, otarget)

new關鍵字就等同於複製了乙份

//建構函式版this

function

bindthis()

var a =

newfn()

;console.

log(a.otarget)

;//***

this指向 改變this指向

常見的this指向 常見的this指向 全域性下的this指向window 函式中的this,誰呼叫指向誰 建構函式中的this指向建構函式的物件 物件中的this預設指向當前物件 事件處理函式中this誰觸發指向誰 指向觸發事件的目標元素 定時器函式,this 指向 window 箭頭函式中沒有t...

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 指向 指向...