目录
一、在全局作用域下的this指向
//我们可以直接在浏览器中打印this
console.log(this); //这里指向的是window
二、在函数内的 this 指向
1:严格模式
function arr() {
console.log(this);
}
arr(); //undefined
window.arr(); //window 在严格模式下我们的代码调用不能省略
2:非严格模式
function arr() {
console.log(this);
}
arr(); //window
window.arr(); //window 在非严格模式下我们的window可以省略不写
三、在对象中的 this 指向
let obj = {
name: "曼尼帕奎奥",
fn: function () {
name: "梅威瑟";
console.log(this.name);
},
};
obj.fn(); //这里打印的是‘曼尼帕奎奥’
调用谁就指向谁
四.箭头函数中的 this 指向
let obj = {
fn: () => {
console.log(this);
},
};
obj.fn();
//this指向window
箭头函数中没有 this 指向所以他会指向他的父级作用域,如果他的父级作用域也是箭头函数那么就会继续向上寻找,直到找到 window 为止。
所以在这个代码里面,obj 是个全局作用域的对象,所以指向的是 window。
五.构造函数中的this指向
function Obj(name, age, honor) {
this.name = name;
this.age = age;
this.honor = honor;
}
let w = new Obj('曼尼帕奎奥',48,'世界拳王')
console.log(w.name);//曼尼帕奎奥
console.log(w.age);//48
console.log(w.honor);//世界拳王
构造函数中的 this 指向实例。