一: this指向的实例分析?
// 下面的函数中this指向哪里 ?
// 实例一:
function foo() {
console.log(this);
}
// 1: 作为函数调用
foo(); // 指向全局变量: globalThis;
// 2: 作为对象的方法调用
const bar = { foo: foo };
bar.foo(); // 指向调用这个方法的对象: bar
// 3: 作为构造方法调用
const f1 = new foo(); // 指向foo {}这个实例对象
// 实例二:
const obj2 = {
foo: function() {
function bar() {
console.log(this)
}
bar()
}
}
obj2.foo(); // 指向全局变量: globalThis
// 实例三:
const obj3 = {
foo: () => {
console.log(this)
}
}
obj3.foo(); // 指向全局变量: globalThis
二: this指向总结
先一句话总结: 看this的最近一个函数(不是箭头函数)是怎么调用的
1: 沿着作用域向上找最近的一个function(不是箭头函数), 看这个function最终是怎么执行的.
2: this的指向取决于所属function的调用方式,而不是定义.
function调用分为以下5种方式: