V8引擎中的Function :: Call的第一个参数是什么意思?
在node-addon-example中, 3_callbacks/addon.cc
第11行3_callbacks/addon.cc
如下:
cb->Call(Context::GetCurrent()->Global(), argc, argv);
V8的文档显示:
V8EXPORT Local<Value> v8::Function::Call(Handle<Object> recv, int argc, Handle<Value> argv[] );
所以Context::GetCurrent()->Global()
被用作Handle<Object> recv
。
但是recv
代表什么呢? 这是什么意思? 为什么在这种情况下使用Context::GetCurrent()->Global()
是合适的?
这在JS中是一样的。 在JS中,你呢
var context = ...; cb.apply(context, [ ...args...]);
作为第一个parameter passing的对象在函数范围内变成了this
。 有关MDN
更多文档。 如果你不了解JS,可以在这里阅读更多关于JS的内容: http : //unschooled.org/2012/03/understanding-javascript-this/