JS_DeleteProperty2 编辑
Obsolete since JSAPI 39
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.
Removes a specified property from an object.
Renamed to JS_DeleteProperty
from JSAPI 39.
Syntax
bool
JS_DeleteProperty2(JSContext *cx, JS::HandleObject obj, const char *name,
bool *succeeded);
bool
JS_DeleteUCProperty2(JSContext *cx, JS::HandleObject obj, const char16_t *name, size_t namelen,
bool *succeeded);
bool
JS_DeletePropertyById2(JSContext *cx, JS::HandleObject obj, JS::HandleId id,
bool *succeeded); // Added in SpiderMonkey 1.8.1
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::HandleObject | Object from which to delete a property. |
name or id | const char * or const char16_t or | Name of the property to delete. |
namelen | size_t | (only in JS_DeleteUCProperty2 ) The length of name in characters; or -1 to indicate that name is null-terminated. |
succeeded | bool * | Out parameter. On success, *succeeded receives false if the property was not deleted because it is permanent and true otherwise. |
Description
JS_DeleteProperty2
removes a specified property, name
, from an object, obj
, and stores true
or false
in *succeeded
. It behaves like the JavaScript expression delete obj[name]
. JS_DeleteUCProperty2
is the Unicode version of the function. JS_DeletePropertyById2
is the same but takes a JS::HandleId
for the property name.
First, a property lookup is performed. Then one of the following cases applies:
- If
obj
has no property with the givenname
orid
, or ifobj
inherits the specified property from its prototype, then*succeeded
is set totrue
andobj
'sJSClass.delProperty
hook is called (which may change*succeeded
). No property is deleted, but this is not an error. - If
obj
has the specified property but it ispermanent
, then*succeeded
receivesfalse
. No property is deleted, but this is not an error. - Otherwise
obj
has a non-permanent own property with the givenname
orid
. In this case,*succeeded
is set totrue
andobj
'sJSClass.delProperty
hook is called (which may change*succeeded
). If the hook returnsfalse
, the error is propagated. Otherwise, ifobj
is not configurable, an error is raised. Otherwise,*succeeded
receivestrue
and the property is removed.
These functions return true
on success, regardless of whether a property was actually deleted. On error or exception, the return value is false
, and the value left in *succeeded
is unspecified.
JSObjectOps.deleteProperty
implements this behavior.
(In JavaScript 1.2 and earlier, attempting to delete a permanent property caused an error. There is no longer any way to get this behavior.)
To remove all properties from an object, call JS_ClearScope
.
See Also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论