代码之家  ›  专栏  ›  技术社区  ›  Magnus

堆栈溢出javascript代码编辑器:可直接访问全局对象“window”的成员

  •  0
  • Magnus  · 技术社区  · 6 年前

    我注意到在stack overflow的javascript代码编辑器中,全局对象有很多成员,包括普通的全局浏览器对象, window .

    它如何为会员提供 窗口 直接(例如 Promise ,如下所示),当完整路径实际上是 this.window.Promise ?

    console.log('this in top-level scope: ', this);
    console.log('Promise constructor on window object, from top-level scope: ', this.window.Promise);
    console.log('Still, grabbing Promise directly works: ', Promise);
    2 回复  |  直到 6 年前
        1
  •  4
  •   Jonas Wilms    6 年前

    因为你看到的实际上是全球 window 包含自引用的自身:

    this === window
    window.window === window
    

    在每一个浏览器中都是这样的,这并不是特别的片段。因此,如果您像这样访问它,这并不重要:

    Promise
    window.Promise
    this.window.Promise
    this.window.window.Promise
    
        2
  •  1
  •   instantaphex    6 年前

    javascript中的关键字“this”指的是当前的执行上下文,不管它是什么。如果当前的执行上下文是全局范围,则这引用窗口。