使用V8——Google Chrome 的 JavaScript 引擎(2)

全局模板(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 );

还能这样使用这个函数的返回值:

=  plus( 1 , 2 ); 
if ( x  ==   3 ){
   
//  do something important here!
}

你可能感兴趣的:(使用V8——Google Chrome 的 JavaScript 引擎(2))