我正在阅读Firefox源代码,我想知道如何创建一些全局函数。
我无法找到窗口对象的创建位置或如何定义脚本要访问的某些全局对象。
我想知道从哪里开始,或者至少知道窗口对象的定义和创建位置,谢谢!
答案 0 :(得分:2)
window
对象主要在nsGlobalWindow.cpp中定义。公共方法/属性属于nsIDOMWindow,nsIDOMJSWindow,nsIDOMEventTarget,nsIDOMStorageIndexedDB和其他一些接口(查找NS_INTERFACE_MAP_ENTRY
宏,但并非所有接口都指公共接口)。
此外,作为任何DOM对象,它可以具有expando属性(由脚本设置的属性)。创建DOM包装器时会自动设置其中一些expando属性(nsWindowSH class)。特别是,实现nsIDOMGlobalPropertyInitializer的组件可以在该阶段设置属性,或者监听content-document-global-created通知的组件。
答案 1 :(得分:0)
window
是全局对象。
任何将被放入window
所以,如果你这样做(在全球范围内):
var myVar = 123;
alert(myVar); // alerts 123
alert(window.myVar); // ALSO alerts 123
答案 2 :(得分:0)
我真的误解了吗?你在用JavaScript写一些东西吗?
如果是这样,只需在全局范围内声明变量即可附加到窗口对象。
window.myvar = 123123;
实际上,如果您没有将代码包裹在closure中,那么您可以执行以下操作:
var myvar = "some value";