2017-10-13 83 views
1

Chrome浏览器如何将宿主对象提供给本机JavaScript环境?宿主对象是用C++实现的,然后与V8源代码链接?浏览器如何扩展本地JavaScript环境以添加像Window这样的主机对象?

窗口对象如何提供给程序员使用?显然,浏览器上的JavaScript环境与node.js环境不同。 Node.js和chrome都使用v8引擎,但它们提供了两种不同的JavaScript环境。我想知道这是如何成为可能的。

+0

不确定你问的是什么,在内部V8将使用C++ /汇编器等。但解释的JS将需要某种形式的绑定到这些内部结构。 Node.js在这里会非常相似,所以这可能会有所帮助。 - > https://stackoverflow.com/questions/24042861/nodejs-what-does-process-binding-mean – Keith

+0

浏览器如何提供像Window,Document等主机对象? V8没有这些对象的概念。 –

+1

你打电话给_node.js_ n原生环境吗?你对V8有什么意思,没有这些对象的概念。“浏览器本身并不多或少是_node.js_,它们都扩展了V8引擎提供的本地类型,并附加了用C++和JS编写的API。 V8提供了一个API来定义C++中的类以及C++和JS之间的通信[v8:Embedder's Guide](https://github.com/v8/v8/wiki/Embedder's Guide)。你经常有JS和C++混合的对象,如窗口,节点,流,... –

回答

2

V8开发者在这里。正如对这个问题的评论已经提到的那样,V8有一个用于嵌入程序的API,嵌入程序用它向JavaScript公开所需的任何对象。选择完全取决于这里的嵌入:Chrome做一件事,node.js另一件事,你自己的应用程序(如果你写一个)可以做一些完全不同的事情。

相关问题