我一直在阅读spidermonkey doc(https://www.digitalocean.com/community/tutorials/docker-explained-how-to-containerize-and-use-nginx-as-a-proxy)并且很难理解全局对象与所有变量和函数之间的关系如何。
说我在test.js中有以下代码:
var Global_Var1 = 1;
var Global_Var2 = 2;
var Global_Func1 = function() {};
var Global_Func2 = function() {};
var Namespace_N1 = Namespace_N1 || {};
var Namespace_N2 = Namespace_N2 || {};
Namespace_N1.functionN1 = function() {};
Namespace_N2.functionN1 = function() {};
在运行时,spidermonkey的“全局对象”内部会是什么?它会是什么样的(树视图):
Global Object (JS::RootedObject, JSClass)
- Global_Var1 (as object property ? with value 1)
- Global_Var2 (as object property ? with value 2)
- Global_Func1 (as object property ? whose value is function)
- Global_Func2 (as object property ? whose value is function)
- Namespace_N1 (as object property ?)
- functionN1
- Namespace_N2 (as object property ?)
- functionN1
有关此主题的任何信息将不胜感激,谢谢:)
答案 0 :(得分:0)
全局对象确实是一个对象。例如,在浏览器的上下文中,window
是全局对象。在全局范围内评估var a = 1;
等同于将a
的属性window
设置为1,即window.a = 1;
。
The documentation of JS_InitStandardClasses
表示JS上下文的初始化要求您将对象作为全局对象。给定对象的现有属性成为全局变量,JS_InitStandardClasses
将标准全局属性(例如Array
,Date
,encodeURIComponent
)添加到给定对象。