使用窗口对象

时间:2010-12-28 16:40:55

标签: javascript

我看到很多人在调用某个变量时使用window.。但是window实际上并不是同一窗口的所有变量都是? 例如:

window.onorientationchange = function() {
  var orientation = window.orientation; // <-- WHY?
  switch(orientation) {
    /* ... */
  }
}

但同样的人使用alert()document等等。为什么?

2 个答案:

答案 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.添加前缀。因此,请在您的代码中使用documentalert等等。

答案 1 :(得分:0)

在许多javascript教程中,使用alert(),document()等没有完全限定的窗口对象,我认为他们只是重复该代码。