2010-03-12 58 views
3

我是javascript和V8中的新手。根據Google的嵌入指南,我在context section中看到了一些關於內置實用JavaScript函數的內容。我還在下載的源代碼中發現了一些.js文件(例如math.js),所以我試圖編寫一個簡單的程序來調用這些文件中的函數,但是我失敗了。如何使用V8的內置功能

  1. Persistent<Context> context = Context::New()創建的上下文是否有任何內置的js函數?我如何訪問它們?

  2. 有沒有辦法首先將現有的js文件導入爲庫(類似於HTML頁面中的src =「xxx」type =「text/javascript」),然後運行我自己的執行腳本?

  3. 我可以通過應用程序中的嵌入式V8庫調用Google Maps API嗎?怎麼樣?

回答

1

3.谷歌地圖需要一個完整的瀏覽器的DOM(或至少XMLHttpRequest的我猜的),你不能只是一個Javascript庫使用它。

+0

非常感謝。我可以看到DOM(例如XMLHttpRequest)是一個瀏覽器的內置對象,javascript可以用來表現某些內容,所以顯然唯一的方法是導入瀏覽器的庫? –

0

我認爲v8免費提供Math。*函數。

你需要自己實現一切,就像加載其他JavaScript文件一樣。 shell.cc有一些您可能正在尋找的功能。

至於地圖API,我相信你需要一個完整的渲染引擎/ JavaScript引擎組合。你可能更願意看看Webkit或者你可以用來嵌入Webkit的東西,因爲你想要做什麼,我不能說。

0

可以使用例如--allow_natives_syntax或--expose_natives_as選項。
下面是與MathLog例子中的src/math.js隨機選出:

首先編譯一個外殼,

$ scons d8 -j8 

然後使用--expose_natives_as:

$ ./d8 --expose_natives_as nat 
V8 version 3.12.7 (candidate) [console: dumb] 
d8> nat.MathLog(100) 
4.605170185988092 

或用 - 帶'%'前綴的allow_natives_syntax:

$ ./d8 --allow_natives_syntax 
V8 version 3.12.7 (candidate) [console: dumb] 
d8> %MathLog(100) 
4.605170185988092