2017-10-13 81 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另一件事,你自己的應用程序(如果你寫一個)可以做一些完全不同的事情。

相關問題