Obsolete since JSAPI 36
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

Create a new Function object from an existing JSFunction.


JSObject *
JS_CloneFunctionObject(JSContext *cx, JSObject *funobj, JSObject *parent);
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 JSObject * The Function to clone.
parent JSObject * The new function's parent.


JS_CloneFunctionObject creates a new function object from funobj. The new object has the same code and argument list as funobj, but uses parent as its enclosing scope. 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 JS_CloneFunctionObject returns funobj itself. On failure, it returns NULL.

See Also