0

我想知道 Javascript 如何维护一个全局命名空间。它是否有任何链接器可以链接与该页面相关的所有 JS 并维护单个全局命名空间?

4

1 回答 1

2

这里要理解的重要一点是,页面中的所有 JavaScript(无论是内联的还是通过拉入的<script src="...">)本质上都是在同一个 VM 中连接和执行的。没有必要“维护一个全局命名空间”,因为所有代码都在同一个地方评估并共享同一个全局对象,window.

请记住,尽管现代引擎确实在内部将 JS 编译为本机代码,但 JS 不像 C 那样是一种编译语言。因此,没有链接器。

有一个您可能想要理解的 VM 概念,称为context。V8 VM 支持运行使用一个全局对象的代码以及使用不同全局对象的代码。这允许在 an<iframe>中运行的代码获取自己的全局对象,但仍可以从父页面的上下文访问和调用方法。

于 2013-04-15T20:48:05.473 回答