如何在V8中将对象传递给JavaScript回调

时间:2013-03-03 06:24:20

标签: javascript c++ node.js v8

我正在研究Node模块,我正在尝试将一个将ObjectWrap子类作为参数的类的实例传递给JavaScript回调。

在其他地方,我已经能够使用:

成功地将JavaScript对象解包到同一个类中
 GitCommit *commit = ObjectWrap::Unwrap<GitCommit>(args[0]->ToObject());

我怎么能这样做呢?我想将GitCommit的实例传递给JavaScript回调,例如:

Local<Value> argv[] = {
  // Error code
  Local<Value>::New(Integer::New(0)),
  // The commit
  commit // Instance of GitCommit : ObjectWrap
};

// Both error code and the commit are passed, JS equiv: callback(error, commit)    
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv);

这可能吗?如果是这样,有人请给我一个例子,或相关文件的链接?

1 个答案:

答案 0 :(得分:3)

所以你正在编写一个节点插件。尝试:

Handle<Value> argv[] = {
    // Error code
    Integer::New(0),
    // The commit
    commit->handle_ // Instance of GitCommit : ObjectWrap
};

// Both error code and the commit are passed, JS equiv: callback(error, commit)    
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv);