我看到很多人在调用变量时使用了window.
。但其实所有同一窗口的变量都在window
中吗?
例如:
window.onorientationchange = function() {
var orientation = window.orientation; // <-- WHY?
switch(orientation) {
/* ... */
}
}
但是同样的人使用alert()
、document
等。为什么呢?
我看到很多人在调用变量时使用了window.
。但其实所有同一窗口的变量都在window
中吗?
例如:
window.onorientationchange = function() {
var orientation = window.orientation; // <-- WHY?
switch(orientation) {
/* ... */
}
}
但是同样的人使用alert()
、document
等。为什么呢?
有时候,您只想将某些函数/变量作为显式属性暴露在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
等内容。