JSObjectOps.lookupProperty

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 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).

Syntax

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.

Description

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.