XadillaX XadillaX - 2 months ago 10
Node.js Question

What does the first argument of Function::Call in V8 Engine mean?

In node-addon-example, line 11 of

reads:

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


V8's documentation shows that:

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


So
Context::GetCurrent()->Global()
is used as
Handle<Object> recv
.

But what does
recv
stand for? What does it mean? And why is it appropriate to use
Context::GetCurrent()->Global()
in this case?

Answer

It is the same as apply in JS. In JS, you do

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

The object passed as the first argument becomes this within the function scope. More documentation on MDN. If you don't know JS well, you can read more about JS's this here: http://unschooled.org/2012/03/understanding-javascript-this/

Comments