有趣的怪癖;加上;javascript和父/子窗口中的关键字

有趣的怪癖;加上;javascript和父/子窗口中的关键字,javascript,window,parent,with-statement,window.opener,Javascript,Window,Parent,With Statement,Window.opener,我注意到javascript中的“with”关键字以及父窗口和子窗口之间的关系,特别是window.opener,有些特别之处。我没有从父窗口测试这个,只有子窗口,但在下面的示例中值得注意-- 父窗口(Parent.html): 子窗口(Child.html): 在本例中,“with”关键字切换到父窗口,第二个警报也会向父窗口触发隐式onfocus。我没有意识到“with”会切换到父窗口,但现在它有了意义。这是因为在web浏览器中运行javascript时,window是全局名称空间。当你写作时

我注意到javascript中的“with”关键字以及父窗口和子窗口之间的关系,特别是window.opener,有些特别之处。我没有从父窗口测试这个,只有子窗口,但在下面的示例中值得注意--

父窗口(Parent.html):

子窗口(Child.html):


在本例中,“with”关键字切换到父窗口,第二个警报也会向父窗口触发隐式onfocus。我没有意识到“with”会切换到父窗口,但现在它有了意义。

这是因为在web浏览器中运行javascript时,
window
是全局名称空间。当你写作时:

alert('Hello, World!');

实际上,您正在调用
window.alert
方法。

发生这种情况是因为在web浏览器中运行javascript时
window
是全局命名空间。当你写作时:

alert('Hello, World!');

实际上您正在调用
窗口。alert
方法。

尽量避免将
关键字一起使用。。。曾经它正在退出JavaScript语言。所以,你编写的任何程序都将在现代浏览器中出现。好的,谢谢。这只是一个学术练习。我认为它是为那些避免oop和更喜欢程序的人创建的。尽量避免使用
关键字。。。曾经它正在退出JavaScript语言。所以,你编写的任何程序都将在现代浏览器中出现。好的,谢谢。这只是一个学术练习。我认为它是为那些避免面向对象编程和更喜欢过程的人创建的。
alert('Hello, World!');