Posted on 2008-10-19 21:17
sufan 阅读(2939)
评论(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!
}