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