五种指向
情况1:在普通函数中,指向window
代码:
var name = "ABC";
function foo() {
let name = 123;
console.log(this.name); //"ABC"
}
foo()
情况2:在事件处理函数中,指向事件源
代码:
document.addEventListener("click", function() {
console.log(this); //document
});
情况3:在对象中,谁调用指向谁
代码:
let obj = {
name: "z3",
age: 18,
say() {
console.log(this.name);
}
}
obj.say(); //z3
let obj1 = {
name: "l4"
}
obj1.say = obj.say;
obj1.say(); //l4
//情况4:在类(构造函数)中,指向实例化对象
代码:
class Stu {
constructor() {
this.name = "z3";
}
}
let stu1 = new Stu();
let stu2 = new Stu();
console.log(stu1.name); //z3
console.log(stu2.name); //z3
stu1.name = "l4";
console.log(stu1.name); //l4
console.log(stu2.name); //z3
情况5:在箭头函数中,看箭头函数所在的环境
代码:
document.addEventListener("click", foo);
// document.addEventListener("click", e => {
// console.log(this); //window
// });
function foo() {
let lovo = () => console.log(this);
lovo(); //#document
}
this的指向
原文:https://www.cnblogs.com/liu01/p/14355168.html