V8 Engine中Function :: Call的第一个参数是什么意思?

时间:2014-04-03 15:56:31

标签: node.js v8

在node-addon-example中,line 11 of 3_callbacks/addon.cc读取:

cb->Call(Context::GetCurrent()->Global(), argc, argv);

V8's documentation表明:

V8EXPORT Local<Value> v8::Function::Call(Handle<Object> recv,
    int argc,
    Handle<Value> argv[]
);

因此Context::GetCurrent()->Global()用作Handle<Object> recv

recv代表什么?这是什么意思?为什么在这种情况下使用Context::GetCurrent()->Global()是合适的?

1 个答案:

答案 0 :(得分:5)

与JS中的apply相同。在JS中,你做

var context = ...;
cb.apply(context, [ ...args...]);

作为第一个参数传递的对象在函数范围内变为this。有关MDN的更多文档。如果你不熟悉JS,你可以在这里阅读有关JS this的更多信息:http://unschooled.org/2012/03/understanding-javascript-this/