【发布时间】:2023-03-22 00:38:01
【问题描述】:
chrome 浏览器如何向原生 JavaScript 环境提供宿主对象?宿主对象是否用 C++ 实现,然后与 V8 源代码链接?
Window 对象是如何提供给程序员使用的?显然,浏览器上的 JavaScript 环境与 node.js 环境不同。 Node.js 和 chrome 都使用 v8 引擎,但它们提供了两种不同的 JavaScript 环境。我想知道这是怎么做到的。
【问题讨论】:
-
不太确定你在问什么,V8 内部将使用 C++/汇编程序等。但是解释的 JS 需要某种形式的绑定到这些内部结构。 Node.js 在这里会非常相似,所以也许这可能会有所帮助。 -> stackoverflow.com/questions/24042861/…
-
浏览器如何提供Window、Document等宿主对象? V8 没有这些对象的概念。
-
你调用 node.js n 原生环境吗?
V8 has no notion of these objects.是什么意思。浏览器与 node.js 相比或多或少不是原生的,它们都使用 C++ 和 JS 编写的附加 API 扩展了 V8 引擎提供的原生类型。并且 V8 提供了一个 API 来定义 C++ 中的类并在 C++ 和 JS v8: Embedder's Guide 之间进行通信。对于 Window、Nodes、Streams 等对象,您经常混合使用 JS 和 C++... -
^ 我想你已经回答了我的问题。我没有将 node.js 称为本地环境。我很抱歉,我的问题中的措辞很尴尬。当我说“V8 没有这些对象的概念”时,我指的是仅在浏览器环境中可用的对象。
-
浏览器只是一个非常漂亮的渲染引擎,Chrome 将使用某种形式的绑定来暴露这些到 V8 引擎。
"V8 has no notion of these objects",V8 没有,但绑定可以。在某些方面,它与dll's没有什么不同,只是绑定更多。
标签: javascript google-chrome dom v8