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

为什么附加到窗口[已编辑]

  •  3
  • Gutzofter  · 技术社区  · 15 年前

    我在查库尼特的密码。

    这是到 file . 看第11行。

    [编辑]

    2 回复  |  直到 15 年前
        1
  •  7
  •   Nick Craver    15 年前

    所有全局对象(函数、变量等)都只是窗口的子对象,它是默认上下文。

    例如: window.jQuery window.$

    这样想可能更容易…你还会把它们放在哪里?当你在做这样一般的事情时,最好(或者至少最容易)把它们放在默认的位置。如果你在做一件有很多函数、对象等的复杂的事情…最好把它们放在一个名称空间或对象中。例如,jQuery的所有代码都在 jQuery window.ajax ,而是 jQuery.ajax .

    这要整洁得多,但在处理一些项目时可能会过分,但如果是这样的话,最好确保它们是唯一的…qunit就是这样做的,在它们的对象前面加上前缀 qunit-

        2
  •  2
  •   bcherry    15 年前

    附加全局变量作为 window 这是坏习惯。所有全局变量都应使用 var

    1. 它使得源代码的静态分析更加困难。通过查看脚本无法判断哪些全局变量将在何时声明。未声明的全局变量 创造 ReferenceError 变量
    2. 以这种方式生成的全局变量是完全不同的,代码没有简单的方法可以检测到这一点。最大的区别是没有 [[DontDelete]] 在globals上这样做,这意味着您可以删除您的全局变量。这太傻了。
    3. 它会诱使您从全局范围之外声明全局变量。这是 魔术

    就我而言 window.x = 1 创建名为 x 窗口 ,因为它是一个类似于任何其他对象(或多或少)的对象。在这些情况下,您应该使用全名,例如。 window.onload onload