The JSClass.call and JSClass.construct hooks are called when a custom object is used like a function. These hooks are of type JSNative
.
Note that when a custom object is called, a this
argument is calculated for it just as if it were a function. That is, the obj
argument received by the JSNative is the this
argument, not the custom object that was called!
// Suppose this object has JSClass.call and JSClass.construct hooks. var custom = new SpecialCustomObject(); custom(); // The JSClass.call hook receives the global object as the obj parameter. new custom(); // The JSClass.construct hook receives the global object as the obj parameter. var x = { specialMethod: custom }; x.specialMethod(); // The JSClass.call hook receives x as the obj parameter. new x.specialMethod(); // The JSClass.construct hook receives x as the obj parameter.
The custom object that was called is JSVAL_TO_OBJECT(JS_ARGV_CALLEE(argv))
.