Determine if an object is an instance of a specified JSClass.
Syntax
bool
JS_InstanceOf(JSContext *cx, JS::Handle<JSObject*> obj, const JSClass *clasp,
              JS::CallArgs *args); // Added in SpiderMonkey 38
bool
JS_InstanceOf(JSContext *cx, JS::Handle<JSObject*> obj, const JSClass *clasp,
              jsval *argv); // Obsolete since JSAPI 32
| Name | Type | Description | 
|---|---|---|
| cx | JSContext * | Pointer to a JS context from which to derive runtime information. Requires request. In a JS_THREADSAFEbuild, the caller must be in a request on thisJSContext. | 
| obj | JS::Handle<JSObject*> | Object to test. | 
| clasp | JSClass * | Class against which to test the object. | 
| args | JS::CallArgs * | Optional pointer to arguments. If non-null, report an error if objis not of typeclasp. Added in SpiderMonkey 38 | 
| argv | jsval * | Optional argument vector. If non-null, report an error if objis not of typeclasp.argvmust be theargvargument passed from the engine to aJSNativecallback,JS_ARGV(cx, rv)in aJSFastNativecallback, orNULL. Obsolete since JSAPI 32 | 
Description
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 true if obj is of the given class and 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 arguments provided by the engine for args with JS::CallArgsFromVp(argc, vp). When args is non-null, JS_InstanceOf behaves as follows. If obj is of the given class, it returns true. Otherwise, it returns false; 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.