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

为什么dom同时具有window和self?

  •  5
  • hekevintran  · 技术社区  · 16 年前

    为什么DOM有一个名为 self 还有一个叫 window 他们什么时候是一样的?增加混乱 窗口 具有名为的属性 自己 所以:

    window === window.self === self
    

    为什么会这样?我应该用哪一个?

    3 回复  |  直到 16 年前
        1
  •  5
  •   Sean Kinsey    16 年前

    self 由javascript环境定义并指向[global]对象(但不是规范的一部分,因此可能不存在),而 window 是DOM规范的一部分。 在大多数浏览器中, 窗口 用作[全局]对象,但并非总是如此。

    self == window.self 并不奇怪,因为它们是同一个物体-当 自己 正在查找,它被发现为全局对象的属性( 窗口 )所以它实际上和 window.self == window.self .

    如其他地方所述,为了可靠地参考 [global] 对象,您应该通过运行 var global = this; 在全局执行上下文中。

        2
  •  1
  •   Nick Craver    16 年前

    当你打电话的时候 self window.self 和其他全球财产一样(例如 location 是真的 window.location )

    它在那里的原因是什么?通常是这样的支票:

    if(window.top != window.self) {
      alert("We're in a frame");
    }
    
        3
  •  0
  •   Pekka    16 年前

    全球 self 是通往 window.self . 它们都是同一个物体。

    为什么两者都有 window 自己 ,在网页上下文中, 自己 总是等于 窗口 (据我所知)。但我想这并不一定总是这样——javascript/ecmascript不仅限于在有dom的网页中使用。

    至于使用什么,两者都应该在正常的网页上下文中安全使用afaik。有关如何使用 窗口 但是。