compact1, compact2, compact3
jdk.nashorn.api.scripting

## Class AbstractJSObject

- java.lang.Object
- - jdk.nashorn.api.scripting.AbstractJSObject

- All Implemented Interfaces:
    JSObject
  Direct Known Subclasses:
    ScriptObjectMirror

      @Exported
      public abstract class AbstractJSObject
      extends Object
      implements JSObject

  This is the base class for nashorn ScriptObjectMirror class. This class can also be subclassed 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 glued to appropriate method call of this class.
  Since:
    1.8u40

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractJSObject()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `call(Object thiz, Object... args)` Call this object as a JavaScript function.
    `Object` | `eval(String s)` Evaluate a JavaScript expression.
    `String` | `getClassName()` ECMA [[Class]] property
    `Object` | `getDefaultValue(Class<?> hint)` Implements this object's `[[DefaultValue]]` method.
    `static Object` | `getDefaultValue(JSObject jsobj, Class<?> hint)` When passed an `AbstractJSObject`, invokes its `getDefaultValue(Class)` method.
    `Object` | `getMember(String name)` Retrieves a named member of this JavaScript object.
    `Object` | `getSlot(int index)` Retrieves an indexed member of this JavaScript object.
    `boolean` | `hasMember(String name)` Does this object have a named member?
    `boolean` | `hasSlot(int slot)` Does this object have a indexed property?
    `boolean` | `isArray()` Is this an array object?
    `boolean` | `isFunction()` Is this a function object?
    `boolean` | `isInstance(Object instance)` Checking whether the given object is an instance of 'this' object.
    `boolean` | `isInstanceOf(Object clazz)` Checking whether this object is an instance of the given 'clazz' object.
    `boolean` | `isStrictFunction()` Is this a 'use strict' function object?
    `Set<String>` | `keySet()` Returns the set of all property names of this object.
    `Object` | `newObject(Object... args)` Call this 'constructor' JavaScript function to create a new object.
    `void` | `removeMember(String name)` Remove a named member from this JavaScript object
    `void` | `setMember(String name, Object value)` Set a named member in this JavaScript object
    `void` | `setSlot(int index, Object value)` Set an indexed member in this JavaScript object
    `double` | `toNumber()` Deprecated. use `getDefaultValue(Class)` with `Number` hint instead.
    `Collection<Object>` | `values()` Returns the set of all property values of this object.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractJSObject

          public AbstractJSObject()

  - ### Method Detail

    - #### call

          public Object call(Object thiz,
                             Object... args)

      Call this object as a JavaScript function. This is equivalent to 'func.apply(thiz, args)' in JavaScript.
      Specified by:
        `call` in interface `JSObject`
      Parameters:
        `thiz` - 'this' object to be passed to the function
        `args` - arguments to method
      Returns:
        result of call

    - #### newObject

          public Object newObject(Object... args)

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

    - #### eval

          public Object eval(String s)

      Evaluate a JavaScript expression.
      Specified by:
        `eval` in interface `JSObject`
      Parameters:
        `s` - JavaScript expression to evaluate
      Returns:
        evaluation result

    - #### getMember

          public Object getMember(String name)

      Retrieves a named member of this JavaScript object.
      Specified by:
        `getMember` in interface `JSObject`
      Parameters:
        `name` - of member
      Returns:
        member

    - #### getSlot

          public Object getSlot(int index)

      Retrieves an indexed member of this JavaScript object.
      Specified by:
        `getSlot` in interface `JSObject`
      Parameters:
        `index` - index slot to retrieve
      Returns:
        member

    - #### hasMember

          public boolean hasMember(String name)

      Does this object have a named member?
      Specified by:
        `hasMember` in interface `JSObject`
      Parameters:
        `name` - name of member
      Returns:
        true if this object has a member of the given name

    - #### hasSlot

          public boolean hasSlot(int slot)

      Does this object have a indexed property?
      Specified by:
        `hasSlot` in interface `JSObject`
      Parameters:
        `slot` - index to check
      Returns:
        true if this object has a slot

    - #### removeMember

          public void removeMember(String name)

      Remove a named member from this JavaScript object
      Specified by:
        `removeMember` in interface `JSObject`
      Parameters:
        `name` - name of the member

    - #### setMember

          public void setMember(String name,
                                Object value)

      Set a named member in this JavaScript object
      Specified by:
        `setMember` in interface `JSObject`
      Parameters:
        `name` - name of the member
        `value` - value of the member

    - #### setSlot

          public void setSlot(int index,
                              Object value)

      Set an indexed member in this JavaScript object
      Specified by:
        `setSlot` in interface `JSObject`
      Parameters:
        `index` - index of the member slot
        `value` - value of the member

    - #### keySet

          public Set<String> keySet()

      Returns the set of all property names of this object.
      Specified by:
        `keySet` in interface `JSObject`
      Returns:
        set of property names

    - #### values

          public Collection<Object> values()

      Returns the set of all property values of this object.
      Specified by:
        `values` in interface `JSObject`
      Returns:
        set of property values.

    - #### isInstance

          public boolean isInstance(Object instance)

      Checking whether the given object is an instance of 'this' object.
      Specified by:
        `isInstance` in interface `JSObject`
      Parameters:
        `instance` - instance to check
      Returns:
        true if the given 'instance' is an instance of this 'function' object

    - #### isInstanceOf

          public boolean isInstanceOf(Object clazz)

      Checking whether this object is an instance of the given 'clazz' object.
      Specified by:
        `isInstanceOf` in interface `JSObject`
      Parameters:
        `clazz` - clazz to check
      Returns:
        true if this object is an instance of the given 'clazz'

    - #### getClassName

          public String getClassName()

      ECMA [[Class]] property
      Specified by:
        `getClassName` in interface `JSObject`
      Returns:
        ECMA [[Class]] property value of this object

    - #### isFunction

          public boolean isFunction()

      Is this a function object?
      Specified by:
        `isFunction` in interface `JSObject`
      Returns:
        if this mirror wraps a ECMAScript function instance

    - #### isStrictFunction

          public boolean isStrictFunction()

      Is this a 'use strict' function object?
      Specified by:
        `isStrictFunction` in interface `JSObject`
      Returns:
        true if this mirror represents a ECMAScript 'use strict' function

    - #### isArray

          public boolean isArray()

      Is this an array object?
      Specified by:
        `isArray` in interface `JSObject`
      Returns:
        if this mirror wraps a ECMAScript array object

    - #### toNumber

          @Deprecated
          public double toNumber()

      Deprecated. use `getDefaultValue(Class)` with `Number` hint instead.
      Returns this object's numeric value.
      Specified by:
        `toNumber` in interface `JSObject`
      Returns:
        this object's numeric value.

    - #### getDefaultValue

          public Object getDefaultValue(Class<?> hint)

      Implements this object's `[[DefaultValue]]` method. The default implementation follows ECMAScript 5.1 section 8.6.2 but subclasses are free to provide their own implementations.
      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`.

    - #### getDefaultValue

          public static Object getDefaultValue(JSObject jsobj,
                                               Class<?> hint)

      When passed an `AbstractJSObject`, invokes its `getDefaultValue(Class)` method. When passed any other `JSObject`, it will obtain its `[[DefaultValue]]` method as per ECMAScript 5.1 section 8.6.2.
      Parameters:
        `jsobj` - the `JSObject` whose `[[DefaultValue]]` is obtained.
        `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`.

Copyright © 2014, 2016, Oracle and/or its affiliates. All rights reserved.