一些属性和方法通常带有前缀window.
,而另一些则没有。
例如,document
和setTimeout()
几乎从不与window.
一起使用。另一方面,window.location
和window.open()
经常与前缀一起使用。
我知道它们本质上指的是同一件事情,并且如果没有window.
,名称可能会被内部作用域中相同名称的内容所隐藏。我不是在询问语法上的区别,而是这种约定的原因。由于这种一致性,我认为一定有原因,我想知道为什么。
成员几乎总是不带前缀找到:
document
console
setTimeout()
alert()
fetch()
带前缀的:
window.location
window.onload
window.open()
location
、onload
和open
过于通用,不能单独使用。将它们附加到其他内容上会使您的代码更易读。然而,在setTimeout
等情况下,如果将它们附加到window
上,则不会增加任何好处。 - Ahmadwindow.URL
也总是如此,这是JS传统中冗余的window.
家族的一部分。这让我疯了好几年;我嘲笑地问:“为什么不使用window.window.URL
?” - dandavis