【发布时间】:2014-08-04 18:50:10
【问题描述】:
假设我有一个 C++ 类:
class cClass {
public:
methodA();
methodB();
private:
//private stuff
}
我可以通过两种方式将这个类绑定到 Node:
方法一——直接继承node::objectWrap
class cClass : public node::ObjectWrap {
public:
static void Init(v8::Handle<v8::Object> exports);
methodA();
methodB();
private:
static v8::Handle<v8::Value> New(const v8::Arguments& args);
//private stuff
}
通过这种方式,我直接编辑类结构。但是有一个更简单的方法,那就是:
方法二 - 在内部保留对原始类的引用
class cClassWrapper : public node::ObjectWrap {
public:
static void Init(v8::Handle<v8::Object> exports);
private:
static v8::Handle<v8::Value> New(const v8::Arguments& args);
cClass internal_;
}
方法二中的注意事项cClassWrapper只有一个内部字段,即internal_。只是cClassWrapper 是cClass 的用户,cClass 的内部结构未受影响。
显然,方法 II 更容易实现,因为 cClass 的类结构没有受到影响,但我想知道它的缺点是什么(如果有的话?)。当我绕过cClassWrapper 时,v8 的垃圾收集器会继续删除internal_ 吗?
我不确定这两种实现有什么区别。
【问题讨论】:
标签: c++ node.js v8 node-modules embedded-v8