JS this绑定的四个规则

JS this绑定的四个规则

分别是 new、 (apply bind call )、默认、隐式

默认绑定

运行时的默认上下文,非严格模式是 window

function foo(){
	console.log(this);
}

foo();

new

当 new 会创建一个对象 然后将this作为上下文

function Obj(){
	this.a = 1;
}
const obj = new Obj();
console.log(obj.a);  // 1

隐式绑定

函数被调用时有上下文对象,那么this会绑定这个上下文对象

function foo(){
	console.log(this.a);
}

const obj = {
	a:12,
	foo,
};
obj.foo();

显示绑定(硬绑定/强制绑定)

使用call,apply或者bind,在调用函数的时候直接指定上下文对象,那么函数中的this会绑定到传入的对象

function foo(){
	console.log(this);
}