温故而知新,可以为湿矣
首先请大家记住这个 V8 的在线手册――http://izs.me/v8-docs/main.html。
还记得上次的 building.gyp 文件吗?
就像这样,举一反三,如果多几个 *.cc 文件的话就是这样的:
"sources": [ "addon.cc", "myexample.cc" ]
上次我们把俩步骤分开了,实际上配置和编译可以放在一起的:
$ node-gyp configure build
复习完了吗?没?!
好的,那我们继续吧。
表番
函数参数
现在我们终于要讲参数了呢。
让我们设想有这样一个函数 add(a, b) 代表把 a 和 b 相加返回结果,所以先把函数外框写好:
Handle<Value> Add(const Arguments& args)
{
HandleScope scope;
//... 又来!
}
Arguments
这个就是函数的参数了。我们不妨先看看 v8 的官方手册参考。
•int Length() const
•Local<Value> operator[](int i) const
其它的我们咱不关心,这两个可重要了!一个代表传入函数的参数个数,另一个中括号就是通过下标索引来访问第 n 个参数的。
所以如上的需求,我们大致就可以理解为 args.Length() 为 2,args[0] 代表 a 以及 args[1] 代表 b 了。并且我们要判断这两个数的类型必须得是 Number。
注意到没,中括号的索引操作符返回结果是一个 Local<Value> 也就是 Node.js 的所有类型基类。所以传进来的参数类型不定的,我们必须得自己判断是什么参数。这就关系到了这个 Value 类型的一些函数了。
•IsArray()
•IsBoolean()
•IsDate()
•IsFunction()
•IsInt32()
•IsNativeError()
•IsNull()
•IsNumber()
•IsRegExp()
•IsString()
•...
我就不一一列举了,剩下的自己看文档。。:.゚