this是咱們常見的一種關鍵字,在不一樣的場景下this也表明不一樣的含義。通常地,咱們把this分爲5種狀況:1.默認綁定。2.隱式綁定。3.顯式綁定。4.new 關鍵字綁定。5.箭頭函數。下面分別簡單的介紹下各類狀況以及最後的判斷圖。javascript
function fn() {
console.log(this)
}
fn(); // this => window
複製代碼
PS:嚴格模式下java
'use strict'
function fn() {
console.log(this)
}
fn(); // this => undefined
複製代碼
let obj = {
a:1,
fn:fn
}
function fn() {
console.log(this)
}
obj.fn(); // this => obj
複製代碼
PS:有一個坑的狀況算法
let obj = {
a:1,
myfn() {
return fn()
}
}
function fn() {
console.log(this)
}
obj.myfn(); // this => window
複製代碼
簡單的理解就是由於函數的存儲方式引用所致使的,具體請小夥伴們自信baidu諮詢app
let obj1 = {
a:1,
fn:fn
}
function fn() {
console.log(this)
}
let obj2 = {
b:2
}
obj1.fn.call(obj2); // this => obj2
// apply是同樣的
複製代碼
function Fn() {
console.log(this)
}
let myfn = new Fn(); // this => Fn {} this指向新建立的對象
複製代碼