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指向新建立的对象
复制代码