This article covers features introduced in SpiderMonkey 38
Create a new Function
object from an existing JSFunction
.
Syntax
JSObject * JS::CloneFunctionObject(JSContext *cx, JS::HandleObject funobj); JSObject * JS::CloneFunctionObject(JSContext *cx, JS::HandleObject funobj, JS::AutoObjectVector &scopeChain);
Name | Type | Description |
---|---|---|
cx |
JSContext * |
Pointer to a JS context from which to derive runtime information. Requires request. In a JS_THREADSAFE build, the caller must be in a request on this JSContext . |
funobj |
JS::HandleObject |
The Function to clone. |
scopeChain |
JS::AutoObjectVector |
The new function's scope chain. |
Description
JS::CloneFunctionObject
creates a new function object from funobj
. The new object has the same code and argument list as funobj
. If scopeChain
is supplied, it uses scopeChain
as its enclosing scope. If scopeChain
is omitted, it creates a new function object in cx
's global. This can be helpful if funobj
is an extant function that you wish to use as if it were enclosed by a newly-created global object.
The new object's prototype is Function.prototype
; JS_NewObject
: Choosing a Default Prototype explains exactly how this is computed. JS::CloneFunctionObject
takes care to choose a prototype that shares a global object with the given parent
whenever possible.
funobj
must be a pointer to a JavaScript function object (see JS_ObjectIsFunction
).
On success, JS::CloneFunctionObject
returns a pointer to the newly created object. If the class of funobj
is not Function, then
returns JS::CloneFunctionObject
funobj
itself. On failure, it returns NULL
.