Posted on 2008-10-19 21:17
sufan 閱讀(2950)
評論(4) 編輯 收藏 引用 所屬分類:
翻譯
全局模板(Global Template)首先,我們需要使用全局模板(Global Template)對我們所作的修改進行控制:
v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New();
該語句創建了一個新的全局模板,這個模板能夠管理我們自己的上下文環境(context)和用戶自定義(customization)。由于在V8中,每個上下文環境都是獨立的,且能夠擁有自己的全局模板,所以這一點顯得很重要。在V8中,一個上下文環境實際上就是一個執行環境,使得許多分開的、相互之間沒有聯系的 JavaScript 應用程序能夠運行在一個V8實例之中。
添加用戶自定義函數
接下來,我們可以添加一個名為“plus”的新函數:
// plus function implementation - Add two numbers
v8::Handle<v8::Value> Plus(const v8::Arguments& args)
{
unsigned int A = args[0]->Uint32Value();
unsigned int B = args[1]->Uint32Value();
return v8_uint32(A + B);
}
//...
//associates plus on script to the Plus function
global->Set(v8::String::New("plus"), v8::FunctionTemplate::New(Plus));
這個函數需要接受一個 const v8::Argument& 類型的值作為參數,并且要返回一個 v8::Handle<v8::Value>類型的值。我們使用在前面創建的全局模板指針來增加一個函數,并把“plus”和回調函數“Plus”聯系起來。當我們每次在腳本程序中使用“plus”調用函數的時候,實際上調用的是我們在上面定義的“Plus”函數,這個函數功能非常簡單:獲取第一個和第二個參數并返回它們的和。
好了,現在我們就可以在腳本中使用這個用戶自定義函數了:
plus(120,44);
還能這樣使用這個函數的返回值:
x = plus(1,2);
if( x == 3){
// do something important here!
}