com.google.gwt.core.client

## Class JavaScriptObject

- java.lang.Object
- - com.google.gwt.core.client.JavaScriptObject

Direct Known Subclasses:
  ArrayBufferNative, ArrayBufferViewNative, CanvasPixelArray, Context2d, DataTransfer, EventTarget, FillStrokeStyle, ImageData, JsArray, JsArrayBoolean, JsArrayInteger, JsArrayMixed, JsArrayNumber, JsArrayString, JsDate, MediaError, NativeEvent, Node, NodeCollection, NodeList, PositionImpl, PositionImpl.CoordinatesImpl, StorageEvent, Style, TextMetrics, TimeRanges, TimeZoneInfo, Touch, XMLHttpRequest

    public class JavaScriptObject
    extends java.lang.Object

An opaque handle to a native JavaScript object. A `JavaScriptObject` cannot be created directly. `JavaScriptObject` should be declared as the return type of a JSNI method that returns native (non-Java) objects. A `JavaScriptObject` passed back into JSNI from Java becomes the original object, and can be accessed in JavaScript as expected.

### Constructor Summary

Constructors
`protected` `JavaScriptObject()` Not directly instantiable.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`<T extends JavaScriptObject> T` `cast()` A helper method to enable cross-casting from any `JavaScriptObject` type to any other `JavaScriptObject` type.
`static JavaScriptObject` `createArray()` Returns a new array.
`static JavaScriptObject` `createArray(int size)` Returns a new array with a given size.
`static JavaScriptObject` `createFunction()` Returns an empty function.
`static JavaScriptObject` `createObject()` Returns a new object.
`boolean` `equals(java.lang.Object other)` Calls a native JS `equals` method if any, otherwise returns `true` if the objects are JavaScript identical (triple-equals).
`int` `hashCode()` Calls a native JS `hashCode` method if any, otherwise uses a monotonically increasing counter to assign a hash code to the underlying JavaScript object.
`java.lang.String` `toSource()` Call the toSource() on the JSO.
`java.lang.String` `toString()` Makes a best-effort attempt to get a useful debugging string describing the given JavaScriptObject.

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### JavaScriptObject

    protected JavaScriptObject()

Not directly instantiable. All subclasses must also define a protected, empty, no-arg constructor.

### Method Detail

#### createArray

    public static JavaScriptObject createArray()

Returns a new array.

#### createArray

    public static JavaScriptObject createArray(int size)

Returns a new array with a given size.

Consider using this method in performance critical code instead of using `createArray()`, since this gives more hints to the underlying JavaScript VM for optimizations.

#### createFunction

    public static JavaScriptObject createFunction()

Returns an empty function.

#### createObject

    public static JavaScriptObject createObject()

Returns a new object.

#### cast

    public final <T extends JavaScriptObject> T cast()

A helper method to enable cross-casting from any `JavaScriptObject` type to any other `JavaScriptObject` type.

Type Parameters:
  `T` - the target type
Returns:
  this object as a different type

#### equals

    public final boolean equals(java.lang.Object other)

Calls a native JS `equals` method if any, otherwise returns `true` if the objects are JavaScript identical (triple-equals).

Overrides:
  `equals` in class `java.lang.Object`

#### hashCode

    public final int hashCode()

Calls a native JS `hashCode` method if any, otherwise uses a monotonically increasing counter to assign a hash code to the underlying JavaScript object. Do not call this method on non-modifiable JavaScript objects.

Overrides:
  `hashCode` in class `java.lang.Object`
Returns:
  the hash code of the object

#### toSource

    public java.lang.String toSource()

Call the toSource() on the JSO.

#### toString

    public final java.lang.String toString()

Makes a best-effort attempt to get a useful debugging string describing the given JavaScriptObject. In Production Mode with assertions disabled, this will either call and return the JSO's toString() if one exists, or just return "[JavaScriptObject]". In Development Mode, or with assertions enabled, some stronger effort is made to represent other types of JSOs, including inspecting for document nodes' outerHTML and innerHTML, etc.

Overrides:
  `toString` in class `java.lang.Object`