mozilla
Your Search Results

    JSResolveOp

    This article is in need of a technical review.

    JSResolveOp is the type of the JSClass.resolve.

    Syntax

    typedef bool
    (* JSResolveOp)(JSContext *cx, JS::HandleObject obj,
                    JS::HandleId id, bool *resolvedp); // Added in JSAPI 36
    typedef bool
    (* JSResolveOp)(JSContext *cx, JS::HandleObject obj,
                    JS::HandleId id); // Obsolete since JSAPI 36
    
    Name Type Description
    cx JSContext * Pointer to the JS context in which the property access is taking place.
    obj JS::HandleObject Pointer to the object whose properties are being accessed.
    id JS::HandleId The name or index of the property being resolved.
    resolvedp bool * Out parameter. Receives the result of resolve operation.

    Description

    JSResolveOp callback is a hook which is called when a property is not found on an object.

    It resolves a lazy property named by id in obj by defining it directly in obj. Lazy properties are those reflected from some peer native property space (e.g., the DOM attributes for a given node reflected as obj) on demand.

    The callback must set *resolvedp to true and return true if the property is resolved, or set *resolvedp to false and return true if the object has no lazy property with the given id; or return false to indicate any other error.

    Obsolete since JSAPI 36

    The callback must return true if the property is resolved, or if the object has no lazy property with the given id; or false to indicate any other error.

    Note: JSNewResolveOp provides a cheaper way to resolve lazy properties.

    JSClass hooks

    JSClass offers the following hook:

    • JSClass.resolve callback is called when a property is not found on an object. It can be used to implement lazy properties.

       

      JS looks for a property in an object, and if not found, tries to resolve the given id. After calling resolve, the engine looks again to see if resolve defined obj[id]. If so, the property lookup succeeds. If not, the process is repeated with obj's prototype.

    See Also

    Document Tags and Contributors

    Contributors to this page: kscarfone, arai
    Last updated by: kscarfone,
    Hide Sidebar