我正在查看 qunit 的代码。
我的问题是为什么要通过属性将 qunit 对象附加到窗口对象。
这是文件的链接。看第 11 行。
如果我查看使用 firebug 运行的单元测试,您会发现它是 window.properties 的一个属性。
[编辑] 附加:在特定命名空间中声明事物的最佳实践是否有特定参考?
我正在查看 qunit 的代码。
我的问题是为什么要通过属性将 qunit 对象附加到窗口对象。
这是文件的链接。看第 11 行。
如果我查看使用 firebug 运行的单元测试,您会发现它是 window.properties 的一个属性。
[编辑] 附加:在特定命名空间中声明事物的最佳实践是否有特定参考?
所有全局对象(函数、变量等)都只是 window 的子对象,它是默认上下文。
例如:window.jQuery
或window.$
这样想可能更容易……你还会把它们放在哪里?当你做这样的事情时,最好(或至少最简单)将它们放在默认位置。如果你正在做一些复杂的事情,有很多函数、对象等......最好将它们放在命名空间或对象中。例如,所有 jQuery 的代码都jQuery
在.window.ajax
jQuery.ajax
这更整洁,但是当您处理一些项目时可能会过度杀伤力,但是如果是这种情况,最好确保它们是唯一的...... qunit 这样做,通过在它们的对象前加上前缀qunit-
将全局变量作为属性附加window
是不好的做法。所有全局变量都应该使用var
. 以下是我的理由:
ReferenceError
s。Usingvar
意味着 JavaScript 的提升生效,并缓解了这个问题。[[DontDelete]]
以这种方式制作的全局变量,这意味着您可以删除全局变量。这很愚蠢。就我而言,window.x = 1
创建一个名为的全局变量的事实x
是 JavaScript 的一个有趣的好奇心,但不应该使用或回答。然而,使用 的属性是有充分理由的window
,因为它和任何其他对象一样(或多或少)。在这些情况下,您应该使用全名,例如,window.onload
而不仅仅是onload
.