
JSObjectOps is not a supported API. Details of the API may change from one release to the next. This documentation should be considered SpiderMonkey internals documentation, not API documentation. See
bug 408416
.
The JavaScript engine calls the JSObjectOps.defaultValue and JSClass.convert callbacks to convert objects to primitive values.
typedef JSBool (*JSConvertOp)(JSContext *cx, JSObject *obj, JSType type, jsval *vp);
| Name | Type | Description |
|---|---|---|
cx |
JSContext * |
Pointer to the JS context in which the conversion is needed. |
obj |
JSObject * |
The object to be converted. |
type |
JSType |
The target type. |
vp |
jsval * |
Out parameter. On success, the callback must store the converted value here. |
The JSObjectOps.defaultValue callback corresponds to the [[DefaultValue]] method defined in
ECMA 262-3 §8.6.2.6
. Many expressions in the ECMAScript language, such as a+b, involve implicit conversion of the operands using [[DefaultValue]].
The behavior for ordinary objects is as described in ECMA 262-3 §8.6.2.6 for [[DefaultValue]]. It calls the JavaScript methods obj.valueOf() and/or obj.toString(). Provide a custom JSObjectOps.defaultValue callback to override this behavior.
The JSClass.convert callback is called from the parts of that default [[DefaultValue]] behavior that would call obj.valueOf(). It should convert obj to the given type, returning JS_TRUE with the resulting value in *vp on success, and returning JS_FALSE on error or exception.
JS_ConvertStub implements the default behavior for the JSClass.convert hook, which is to call obj.valueOf().
Page last modified 21:54, 6 Mar 2008 by Jorend