个人关于对象的属性值为函数在重新赋值给对象属性过程中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指向为函数