Interface JSObject

All Known Implementing Classes:
AbstractJSObject, ScriptObjectMirror

public interface JSObject
This interface can be implemented by an arbitrary Java class. Nashorn will treat objects of such classes just like nashorn script objects. Usual nashorn operations like obj[i], obj.foo, obj.func(), delete obj.foo will be delegated to appropriate method call of this interface.
Since:
1.8u40
  • Method Details

    • call

      Object call(Object thiz, Object... args)
      Call this object as a JavaScript function. This is equivalent to 'func.apply(thiz, args)' in JavaScript.
      Parameters:
      thiz - 'this' object to be passed to the function. This may be null.
      args - arguments to method
      Returns:
      result of call
    • newObject

      Object newObject(Object... args)
      Call this 'constructor' JavaScript function to create a new object. This is equivalent to 'new func(arg1, arg2...)' in JavaScript.
      Parameters:
      args - arguments to method
      Returns:
      result of constructor call
    • eval

      Object eval(String s)
      Evaluate a JavaScript expression.
      Parameters:
      s - JavaScript expression to evaluate
      Returns:
      evaluation result
    • getMember

      Object getMember(String name)
      Retrieves a named member of this JavaScript object.
      Parameters:
      name - of member
      Returns:
      member
      Throws:
      NullPointerException - if name is null
    • getSlot

      Object getSlot(int index)
      Retrieves an indexed member of this JavaScript object.
      Parameters:
      index - index slot to retrieve
      Returns:
      member
    • hasMember

      boolean hasMember(String name)
      Does this object have a named member?
      Parameters:
      name - name of member
      Returns:
      true if this object has a member of the given name
    • hasSlot

      boolean hasSlot(int slot)
      Does this object have a indexed property?
      Parameters:
      slot - index to check
      Returns:
      true if this object has a slot
    • removeMember

      void removeMember(String name)
      Remove a named member from this JavaScript object
      Parameters:
      name - name of the member
      Throws:
      NullPointerException - if name is null
    • setMember

      void setMember(String name, Object value)
      Set a named member in this JavaScript object
      Parameters:
      name - name of the member
      value - value of the member
      Throws:
      NullPointerException - if name is null
    • setSlot

      void setSlot(int index, Object value)
      Set an indexed member in this JavaScript object
      Parameters:
      index - index of the member slot
      value - value of the member
    • keySet

      Set<String> keySet()
      Returns the set of all property names of this object.
      Returns:
      set of property names
    • values

      Collection<Object> values()
      Returns the set of all property values of this object.
      Returns:
      set of property values.
    • isInstance

      boolean isInstance(Object instance)
      Checking whether the given object is an instance of 'this' object.
      Parameters:
      instance - instance to check
      Returns:
      true if the given 'instance' is an instance of this 'function' object
    • isInstanceOf

      boolean isInstanceOf(Object clazz)
      Checking whether this object is an instance of the given 'clazz' object.
      Parameters:
      clazz - clazz to check
      Returns:
      true if this object is an instance of the given 'clazz'
    • getClassName

      String getClassName()
      ECMA [[Class]] property
      Returns:
      ECMA [[Class]] property value of this object
    • isFunction

      boolean isFunction()
      Is this a function object?
      Returns:
      if this mirror wraps a ECMAScript function instance
    • isStrictFunction

      boolean isStrictFunction()
      Is this a 'use strict' function object?
      Returns:
      true if this mirror represents a ECMAScript 'use strict' function
    • isArray

      boolean isArray()
      Is this an array object?
      Returns:
      if this mirror wraps a ECMAScript array object
    • toNumber

      @Deprecated default double toNumber()
      Deprecated.
      use getDefaultValue(Class) with Number hint instead.
      Returns this object's numeric value.
      Returns:
      this object's numeric value.
    • getDefaultValue

      default Object getDefaultValue(Class<?> hint) throws UnsupportedOperationException
      Implements this object's [[DefaultValue]] method as per ECMAScript 5.1 section 8.6.2.
      Parameters:
      hint - the type hint. Should be either null, Number.class or String.class.
      Returns:
      this object's default value.
      Throws:
      UnsupportedOperationException - if the conversion can't be performed. The engine will convert this exception into a JavaScript TypeError.