This article needs a technical review. How you can help.
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_THREADSAFE build, the caller must be in a request on this JSContext . |
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 obj is not of type clasp . Added in SpiderMonkey 38 |
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 . 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
.