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