【问题标题】:What is the root object in Node.jsNode.js 中的根对象是什么
【发布时间】:2014-02-05 13:17:49
【问题描述】:

你可能知道 Node.js 中的global object

{Object} 全局命名空间对象。

在浏览器中,顶级范围 是全局范围。这意味着如果您在浏览器中 global scope var something 将定义一个全局变量。在节点这个 是不同的。顶级范围不是全局范围;变量 Node 模块中的某些内容将是该模块的本地内容。

现在我偶然发现了 root 对象,该对象似乎无处记录。

虽然看起来我可以像global一样使用root

test1.js

foo = 'bar'; // foo is defined in the global scope (no var in front of foo)

test2.js

require('./test1.js');
console.log(root.foo);

在外壳中:

$ node test2.js
bar

当我在 shell 中检查 globalroot 时,它们看起来是一样的。试试:

$ node
> global
...
> root
...

所以看来rootglobal 是一样的。但为什么会出现冗余?为什么root 没有记录?是否已弃用?

【问题讨论】:

  • 节点; root === global; // true
  • true 的结果只是告诉我们,两个名称都引用同一个“对象引用”。
  • @Lego 但引用相等比深度相等更强大...
  • 您可能不知道,ECMAscripts 对象在某种程度上是在黑洞中创建的(有些人也将其称为 HEAP)。即使你像var myobj = { }; 一样,你也只会收到一个 reference 到 ECMA 空间中新创建的对象,而不是“对象本身”。只是为了澄清。

标签: javascript node.js global


【解决方案1】:

global一模一样。

有一些像这样的无证属性。它们可以追溯到节点的早期,但为了保持向后兼容性而保留下来,并且没有迫切需要删除它们。

您不应该在任何新代码中使用它们,因为它们可能在未来的任何时候被删除。

【讨论】:

猜你喜欢
  • 2021-12-13
  • 1970-01-01
  • 2021-12-12
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2012-12-19
  • 2019-10-12
相关资源
最近更新 更多