this的理解

75 阅读1分钟

this的指向不是在编写时确定的,而是在执行时确定的 1、在默认情况下this指向全局,比如在浏览器中就是指向window,node中指向global 2、如果被调用的位置存在上下文对象时,那么函数是被隐式绑定

function f() {
	console.log(this.name)
}
const obj = {
	name: 'liu',
    fn: f
}
obj.fn(); // 被调用的位置恰好被对象obj拥有,打印'liu'

3、显示改变this指向,常见方法,call、apply、bind

function f() {
	console.log( this.name ); 
} 
var obj = {
	name: "liu", 
};
f.call(obj) // 打印‘liu’

4、new绑定 用new调用一个构造函数,会创建一个新对象,在创建这个新对象的过程中,新对象会自动绑定到上级函数的(person对象)的this上,那么this就指向这个新对象

function Person(name) {
	this.name = name;
    console.log(name); 
}
var person1 = new Person('Messi')

绑定优先级: new绑定 > 显示绑定 > 隐式绑定 > 默认绑定