April 23, 2000 - window.open vs. document.open

An important point about the open() method is that it is almost always invoked as window.open(), even though window refers to the global object and should therefore be entirely optional. Since the document object also has an open() method, specifying the window object when we want to open a new window is essential for clarity. In event handlers, you must specify window.open() instead of simply using open(). Due to the scoping of static objects in JavaScript, a call to open() without specifying an object name is equivalent to document.open(). When the event handler of an HTML button executes, for example, the scope chain includes the Button object, the Form object, the Document object, and finally, the Window object that contains the document. Thus, if such an event handler refers to the open() method, this identifier ends up being resolved in the Document object, and the event handler opens a new document instead of opening a new window.