Interface ObjectLike

All Known Subinterfaces:
SimpleObject
All Known Implementing Classes:
JavaObject, JsBoolean, JsFunction, JsFunctionWrapper, JsJava, JsJson, JsPromise, JsRegex

public interface ObjectLike
  • Method Summary

    Modifier and Type
    Method
    Description
    Raw-value accessor — returns the stored data value, or null for accessor descriptors (which have no extractable raw value).
    default Object
    getMember(String name, Object receiver, io.karatelabs.js.CoreContext ctx)
    JS-semantic resolved read.
    default ObjectLike
    Returns the prototype (__proto__) for prototype chain walking.
    default boolean
     
    default boolean
     
    default boolean
    True iff name is an own property — not inherited, not absent.
    default boolean
     
    void
    putMember(String name, Object value)
     
    default void
    putMember(String name, Object value, io.karatelabs.js.CoreContext ctx, boolean strict)
    Strict-aware [[Set]] (ES 10.4.7 OrdinarySetWithOwnDescriptor).
    void
     
    default void
    removeMember(String name, io.karatelabs.js.CoreContext ctx, boolean strict)
    Strict-aware [[Delete]] (ES 13.5.1.2 / DeletePropertyOrThrow).
    default void
    setExtensible(boolean extensible)
     
    default void
    setFrozen(boolean frozen)
     
    default void
    setSealed(boolean sealed)
     
     
  • Method Details

    • getMember

      Object getMember(String name)
      Raw-value accessor — returns the stored data value, or null for accessor descriptors (which have no extractable raw value). Internal map / Java-interop callers (toMap, Map.get, jsEntries) and subclass super.getMember(name) chains use this.

      For JS-semantic reads that must invoke an accessor's getter, use getMember(String, Object, CoreContext) instead.

    • getMember

      default Object getMember(String name, Object receiver, io.karatelabs.js.CoreContext ctx)
      JS-semantic resolved read. For data descriptors returns the value; for accessor descriptors invokes the getter with receiver bound as this. receiver is the object the property is being read on (may differ from this when walking a prototype chain). ctx threads through to the getter call. Default delegates to getMember(String) — implementations with accessor storage (JsObject, JsArray) override.
    • putMember

      void putMember(String name, Object value)
    • putMember

      default void putMember(String name, Object value, io.karatelabs.js.CoreContext ctx, boolean strict)
      Strict-aware [[Set]] (ES 10.4.7 OrdinarySetWithOwnDescriptor). Same store as putMember(String, Object), but when the write is rejected — frozen object, non-extensible new key, non-writable data property, or a get-only accessor — a sloppy caller gets the silent no-op while a strict caller gets a JsErrorException TypeError. ctx threads through for accessor setters.

      Default delegates to the lenient putMember(String, Object) — host bridges that don't model property attributes are perpetually writable, so there is nothing to reject. JsObject / JsArray override to enforce.

    • removeMember

      void removeMember(String name)
    • removeMember

      default void removeMember(String name, io.karatelabs.js.CoreContext ctx, boolean strict)
      Strict-aware [[Delete]] (ES 13.5.1.2 / DeletePropertyOrThrow). Same removal as removeMember(String), but a non-configurable own property is a silent no-op for a sloppy caller and a TypeError for a strict caller. Default delegates to the lenient removeMember(String); JsObject / JsArray override to enforce.
    • toMap

      Map<String,Object> toMap()
    • getPrototype

      default ObjectLike getPrototype()
      Returns the prototype (__proto__) for prototype chain walking. Default returns null (no prototype chain).
    • isOwnProperty

      default boolean isOwnProperty(String name)
      True iff name is an own property — not inherited, not absent. Default reads toMap() which works for any host ObjectLike; JsObject / JsArray / Prototype override with tighter implementations that distinguish tombstones from absent keys and intrinsic-installed entries.
    • isExtensible

      default boolean isExtensible()
    • isSealed

      default boolean isSealed()
    • isFrozen

      default boolean isFrozen()
    • setExtensible

      default void setExtensible(boolean extensible)
    • setSealed

      default void setSealed(boolean sealed)
    • setFrozen

      default void setFrozen(boolean frozen)