JS对象中的方法的this指向
<script>
// 对象里的方法写的是箭头函数,this始终访问全局
var name = "xiaoming";
var obj1 = {
name: "xiaohong",
getName: () => {
console.log(this.name);
},
};
obj1.getName(); // xiaoming
let getName1 = obj1.getName;
getName1(); // xiaoming
let getName11 = obj1.getName.bind(obj1);
getName11(); // xiaoming
// 对象的方法写的 function 声明,直接调用 this 指向对象本身,将调用的方法单独保存起来调用,this 指向全局,通过bind 改写 this 指向后,可以继续指向 对象本身
var obj2 = {
name: "xiaohong",
getName: function () {
console.log(this.name);
},
};
obj2.getName(); // xiaohong
let getName2 = obj2.getName;
getName2(); // xiaoming
let getName22 = obj2.getName.bind(obj2);
getName22(); // xiaohong
obj2.getName.call(obj2); // xiaohong
</script>

浙公网安备 33010602011771号