假设我有一个 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_
. SimplycClassWrapper
是一个用户cClass
并且其内部没有cClass
被触及。
显然,方法 II 更容易实现,因为类结构cClass
没有受到影响,但我想知道它的缺点是什么(如果有的话?)。internal_
当我四处走动时, v8 的垃圾收集器会不断删除cClassWrapper
吗?
我不确定这两种实现之间的区别是什么。