一、函式的呼叫方式決定了 this 的指向不同,但總的原則,this指的是呼叫函式的那個物件:
1.普通函式呼叫,此時 this 指向 全域性物件window
function fn()2.在嚴格模式下"use strict",為undefined.fn();
此處預設省略window
function foo()3.物件的方法裡呼叫,this指向呼叫該方法的物件foo();
let person =4.構造函式呼叫, 此時 this 指向 new出來的例項物件}person.say();
5.通過事件繫結的方法, 此時 this 指向 繫結事件的物件
"6.定時器函式, 此時 this 指向 全域性物件windowbtn">hh
二、更改this指向的三個方法
1.call() 方法
call(thisscope, arg1, arg2, arg3...)
call,可以傳入多個引數,改變this指向後立刻呼叫函式
沒錯,就像上面說的,普通函式的this指向window,現在讓我們更改this指向
看,現在this就指向person了
3.bind()方法
bind(thisscope, arg1, arg2, arg3...),bind 改變this的指向,返回的是函式
bind()建立的是乙個新的函式(稱為繫結函式),與被呼叫函式有相同的函式體,當目標函式被呼叫時this的值繫結到 bind()的第乙個引數上
三、改變this指向的例子
沒錯,就像上面所說,定時器裡的this指向window,那麼怎麼改成指向div呢
上圖就是用bind改變了this指向,但改變定時器中的this指向,我們有個更好的方法
定義乙個_this變數來儲存this值,使全域性物件裡面的this 指向person 的this
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的指向及改變this指向問題
this的指向問題 1,普通函式中的this是指向window 非嚴格模式 2,普通函式中的this是指向undefined 嚴格模式 嚴格模式是es5提出的 function foo foo 3,建構函式中的this是例項物件 4,原型方法中的this是例項物件 與建構函式中的this相同 5,定...