我看到很多人在调用某个变量时使用window.
。但是window
实际上并不是同一窗口的所有变量都是?
例如:
window.onorientationchange = function() {
var orientation = window.orientation; // <-- WHY?
switch(orientation) {
/* ... */
}
}
但同样的人使用alert()
,document
等等。为什么?
答案 0 :(得分:2)
在某些时候,您希望仅将某些函数/变量公开为window
的显式属性。
(function() {
var jQuery = function(selector) { alert( selector ) }
})();
jQuery // not defined
如果我们将其改为:
(function() {
var jQuery = function(selector) { alert( selector ) }
window.jQuery = jQuery;
})();
然后我们明确地从私有命名空间“公开”它。
是的,您不必明确声明window.
来调用alert
之类的方法,但每个人都有自己的编码风格,每个人都有自己的程度,他们的陈述应该是多么明确
有些人明确地将window.
加上alert
之类的全局方法,以避免混淆。假设您在名为alert
的私有名称空间中定义了一个函数,例如......
(function() {
function alert() {}
alert('lol'); // does nothing
window.alert('lol') // does something
})();
我们不能在该私有命名空间内使用alert
来进行警报,因为我们定义了一个具有完全相同名称的函数。我们必须明确引用window.alert
方法来解决这个问题。
但是出于一般目的,我会说除非你将私有命名空间中的东西暴露给全局命名空间,否则不要用window.
添加前缀。因此,请在您的代码中使用document
和alert
等等。
答案 1 :(得分:0)
在许多javascript教程中,使用alert(),document()等没有完全限定的窗口对象,我认为他们只是重复该代码。