代码之家  ›  专栏  ›  技术社区  ›  Milan BabuÅ¡kov

“自我”和“窗口”有什么区别?

  •  35
  • Milan BabuÅ¡kov  · 技术社区  · 14 年前

    我有一个JavaScript来处理页面是否在帧中的检测。我曾经顶部框架[]等等,一切正常。

    4 回复  |  直到 14 年前
        1
  •  21
  •   Ender    14 年前

    :

    Window对象定义了许多 操作web浏览器窗口。 其他重要物体,如 这个 document 的属性 文档对象。最后是窗户 属性, window self . 你呢

    总之,两者都是 窗口 自己 是对Window对象的引用,Window对象是客户端javascript的全局对象。

        2
  •  24
  •   Titus    8 年前

    self 是一个 只读 window 自己 的引用根据操作上下文而变化(与 window.self ,仅当 窗口 存在)。正如其他人所提到的,它也很适合进行比较。

    例如,如果您使用 自己 在Web Worker内部(它位于自己的后台线程中), 自己 将实际引用 WorkerGlobalScope.self . 但是,如果您使用 自己 将只返回对 Window.self document , addEventListener() ,以及所有其他你习惯看到的东西)。

    当医生 .self 在里面 窗口.self 窗口 不存在,使用 自己 它自己会指向 WorkerGlobalScope.self文件 在web worker上下文中。

    和往常一样,MDN在这个问题上有一篇很好的文章 in their JavaScript docs . :)


    旁注: 使用 这里不应与声明局部变量的常见JS模式混淆: var self = this

    Getting Out of Binding Situations in JavaScript .

        3
  •  12
  •   Qantas 94 Heavy user3381402    11 年前

    the MDN page for window.self :

    if (window.parent.frames[0] != window.self) {
       // this window is not the first frame in the list
    }
    

    窗口.self 几乎总是在比较中使用,比如在上面的示例中,它确定当前窗口是否是父帧集中的第一个子帧。

    self window 而不是 窗口.self 是等价的。

        4
  •  4
  •   davehauser    14 年前

    window self 两者都引用当前网页的全局对象。

    更多信息请看 http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific