函数赋值时this执行环境的改变缘故

函数赋值时this执行环境的改变原因

<!DOCTYPE html>
<html>
    <head>
        <title>This Object Example 3</title>
    </head>
    <body>
        <script type="text/javascript">
        
            var name = "The Window";
            
            var object = {
                name : "My Object",
            
                getName: function(){
                    return this.name;
                }
            };
            
            alert(object.getName());     //"My Object"
            alert((object.getName)());   //"My Object"
            alert((object.getName = object.getName)());   //"The Window" in non-strict mode

        </script>
     
    </body>
</html>


请问最后一种调用的方式得到的结果为什么是"the window"?越详细越好,谢谢!
我只知道肯定是跟赋值操作时this的执行环境的改变有关系,但是不太清楚具体的过程。
------解决思路----------------------
引用:
Quote: 引用:

这个不能太详细,详细就如老道在js语言精粹里边说的,这是一个js 设计bug,跟作用域什么的可能关系不大。然后如何避免这个bug高程上讲了,如果现在你还是看不懂,那可能缺少对js语言全局宏观概念的掌握,建议看看js语言精粹,虽然那书不太适合新手看,但你就只看this这块。然后实战其它代码吧,回头等建立或习惯于js的各种其芭,或建立那种全局观之后,再来看这个问题,或许豁然开朗。


你的意思是,这种用法不按常理出牌?在语法上找不到合理的解释方法?如果是这样的话,我将其理解为一个bug是不是会容易接受一些...函数赋值时this执行环境的改变缘故

目前可以这么粗糙的理解,但是理解为bug的话,里边也有沉淀多年的js历史问题,后面了解其它js全局概念后,在回来了解。