MDN’s new design is in Beta! A sneak peek:

JS InstanceOf

Determine if an object is an instance of a specified JSClass.


JSBool JS_InstanceOf(JSContext *cx, JSObject *obj, JSClass *clasp, jsval *argv);
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.
obj JSObject * Object to test.
clasp JSClass * Class against which to test the object.
argv jsval * Optional argument vector. If non-null, report an error if obj is not of type clasp. argv must be the argv argument passed from the engine to a JSNative callback, JS_ARGV(cx, rv) in a JSFastNative callback, or NULL.


JS_InstanceOf can be used to check whether an object obj is of a particular JSClass. To use it this way, pass NULL for argv. JS_InstanceOf returns JS_TRUE if obj is of the given class and JS_FALSE otherwise. That is, it returns JS_GetClass(obj) == clasp.

JS_InstanceOf can also be used in native functions to check the class of an argument when a particular class is required. To use it this way, pass the argument vector provided by the engine for argv. When argv is non-null, JS_InstanceOf behaves as follows. If obj is of the given class, it returns JS_TRUE. Otherwise, it returns JS_FALSE; but if JS_ARGV_CALLEE(argv) is a function, it also reports a TypeError containing the function's name.

Note that JS_InstanceOf is not the equivalent of the JavaScript instanceof keyword, which examines constructor properties along the prototype chain. JS_HasInstance is similar to instanceof.

MXR ID Search for JS_InstanceOf

Document Tags and Contributors

 Last updated by: Jorend,