<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>