JSObjectOps.defaultValue 编辑
Obsolete since JavaScript 1.8.5
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.
Warning! 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 for details.
The JavaScript engine calls the JSObjectOps.defaultValue
and JSClass.convert
callbacks to convert objects to primitive values.
Syntax
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. |
Description
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 default [[DefaultValue]] behavior for ordinary objects is as described in ES5 §8.12.8. It calls the JavaScript methods obj.valueOf()
and/or obj.toString()
. Provide a custom JSObjectOps.defaultValue
callback to implement customized [[DefaultValue]] behavior.
The JSClass.convert
callback 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. On success, *vp
must be a primitive value: per ES5 §8.12.8, every object "must ensure that its [[DefaultValue]] internal method can return only primitive values." Debug builds of SpiderMonkey will assert if a convert callback is successful but leaves *vp
holding a primitive value.
JS_ConvertStub
implements the default behavior for the JSClass.convert
hook, which is to call obj.valueOf()
and obj.toString()
in accordance with the algorithm in ES5 §8.12.8.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论