
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 JSObjectOps.lookupProperty callback is called for every property access (except when a higher-level callback, such as JSObjectOps.getProperty, is overloaded in a way that does not call lookupProperty).
typedef JSBool (*JSLookupPropOp)(JSContext *cx, JSObject *obj, jsid id, JSObject **objp, JSProperty **propp);
| Name | Type | Description |
|---|---|---|
cx |
JSContext * |
Pointer to the JS context in which the property lookup is happening. |
obj |
JSObject * |
The object whose properties are being searched. |
id |
jsid |
The name or index of the property to look up. |
objp |
JSObject ** |
Out parameter. If the property is found, the callback stores the object on which the property was found in *objp. |
propp |
JSProperty ** |
Out parameter. On success, the callback stores in *propp a pointer to the property, if it exists, or NULL if it doesn't. |
Look for id in obj and its prototype chain, returning JS_FALSE on error or exception, JS_TRUE on success. On success, return null in *propp if id was not found. If id was found, return the first object searching from obj along its prototype chain in which id names a direct property in *objp, and return a non-null, opaque property pointer in *propp.
If JSLookupPropOp succeeds and returns with *propp non-null, that pointer may be passed as the prop parameter to a JSAttributesOp, as a short-cut that bypasses id re-lookup. In any case, a non-null *propp result after a successful lookup must be dropped via JSObjectOps.dropProperty.
Note: A successful return with non-null *propp means the implementation may have locked *objp and added a reference count associated with *propp, so callers should not risk deadlock by nesting or interleaving other lookups or any obj-bearing ops before dropping *propp.
Page last modified 21:16, 11 Apr 2008 by Jorend