个人关于对象的属性值为函数在重新赋值给对象属性过程中this指向window理解

window.name = 'window';
const obj = {
    name: 'obj',
    getName() {
        console.log(this.name);
    }
}; 
(obj.getName = obj.getName)() // window

理解:obj.getName = obj.getName的赋值操作的返回是一个函数,而当前函数是没有绑定到obj对象上的,直接调用的话this就会指向window。可以理解为赋值之前函数的指针为obj.getName,此时调用函数使用obj.getName()进行调用,this指向的是obj。在赋值的过程中函数的指针是保存在了window上,可以理解为没有对应的指针名名称的,此时调用就要在赋值操作上调用。完成赋值操作后指针重新给了obj.getName,此时再调用函数的话就要使用obj.getName()进行调用了。

 

 变量赋值这一部分代码执行的时候会有对应的返回,例如语句const a = 1;执行的时候当前语句执行结果为1 而obj.getName = obj.getName语句的执行结果为obj.getName指向为函数

原文地址:https://www.cnblogs.com/shenhf/p/15603023.html