Posted on 2008-10-19 21:17
sufan 閱讀(2950)
評論(4) 編輯 收藏 引用 所屬分類:
翻譯
全局模板(Global Template)首先,我們需要使用全局模板(Global Template)對我們所作的修改進行控制:
v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New();
該語句創(chuàng)建了一個新的全局模板,這個模板能夠管理我們自己的上下文環(huán)境(context)和用戶自定義(customization)。由于在V8中,每個上下文環(huán)境都是獨立的,且能夠擁有自己的全局模板,所以這一點顯得很重要。在V8中,一個上下文環(huán)境實際上就是一個執(zhí)行環(huán)境,使得許多分開的、相互之間沒有聯(lián)系的 JavaScript 應(yīng)用程序能夠運行在一個V8實例之中。
添加用戶自定義函數(shù)
接下來,我們可以添加一個名為“plus”的新函數(shù):
// 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));
這個函數(shù)需要接受一個 const v8::Argument& 類型的值作為參數(shù),并且要返回一個 v8::Handle<v8::Value>類型的值。我們使用在前面創(chuàng)建的全局模板指針來增加一個函數(shù),并把“plus”和回調(diào)函數(shù)“Plus”聯(lián)系起來。當(dāng)我們每次在腳本程序中使用“plus”調(diào)用函數(shù)的時候,實際上調(diào)用的是我們在上面定義的“Plus”函數(shù),這個函數(shù)功能非常簡單:獲取第一個和第二個參數(shù)并返回它們的和。
好了,現(xiàn)在我們就可以在腳本中使用這個用戶自定義函數(shù)了:
plus(120,44);
還能這樣使用這個函數(shù)的返回值:
x = plus(1,2);
if( x == 3){
// do something important here!
}