org.mozilla.javascript

## Class BoundFunction

- java.lang.Object
- - org.mozilla.javascript.ScriptableObject
  - - org.mozilla.javascript.IdScriptableObject
    - - org.mozilla.javascript.BaseFunction
      - - org.mozilla.javascript.BoundFunction

- All Implemented Interfaces:
    java.io.Serializable, Callable, ConstProperties, DebuggableObject, Function, IdFunctionCall, Scriptable

      public class BoundFunction
      extends BaseFunction

  The class for results of the Function.bind operation EcmaScript 5 spec, 15.3.4.5
  Author:
    Raphael Speyer
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.mozilla.javascript.ScriptableObject

      `CONST, DONTENUM, EMPTY, PERMANENT, READONLY, UNINITIALIZED_CONST`

    - ### Fields inherited from interface org.mozilla.javascript.Scriptable

      `NOT_FOUND`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BoundFunction(Context cx, Scriptable scope, Callable targetFunction, Scriptable boundThis, java.lang.Object[] boundArgs)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `call(Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] extraArgs)` Should be overridden.
    `Scriptable` | `construct(Context cx, Scriptable scope, java.lang.Object[] extraArgs)` Call the function as a constructor.
    `int` | `getLength()`
    `boolean` | `hasInstance(Scriptable instance)` Implements the instanceof operator for JavaScript Function objects.

    - ### Methods inherited from class org.mozilla.javascript.BaseFunction

      `createObject, execIdCall, fillConstructorProperties, findInstanceIdInfo, findPrototypeId, getArity, getClassName, getClassPrototype, getFunctionName, getInstanceIdName, getInstanceIdValue, getMaxInstanceId, getPrototypeProperty, getTypeOf, hasPrototypeProperty, initPrototypeId, setImmunePrototypeProperty, setInstanceIdValue`

    - ### Methods inherited from class org.mozilla.javascript.IdScriptableObject

      `activatePrototypeMap, addIdFunctionProperty, defaultGet, defaultPut, defineOwnProperty, delete, exportAsJSClass, get, getAttributes, getOwnPropertyDescriptor, has, hasPrototypeMap, incompatibleCallError, initPrototypeConstructor, initPrototypeMethod, initPrototypeValue, instanceIdInfo, put, setAttributes, setInstanceIdAttributes`

    - ### Methods inherited from class org.mozilla.javascript.ScriptableObject

      `applyDescriptorToAttributeBitset, associateValue, avoidObjectDetection, buildDataDescriptor, callMethod, callMethod, checkPropertyChange, checkPropertyDefinition, defineClass, defineClass, defineClass, defineConst, defineConstProperty, defineFunctionProperties, defineOwnProperties, defineOwnProperty, defineProperty, defineProperty, defineProperty, defineProperty, delete, deleteProperty, deleteProperty, ensureScriptable, ensureScriptableObject, equivalentValues, get, get, getAllIds, getArrayPrototype, getAssociatedValue, getAttributes, getAttributes, getAttributes, getClassPrototype, getDefaultValue, getDefaultValue, getFunctionPrototype, getGetterOrSetter, getIds, getObjectPrototype, getParentScope, getProperty, getProperty, getPropertyIds, getPrototype, getSlot, getTopLevelScope, getTopScopeValue, getTypedProperty, getTypedProperty, has, hasProperty, hasProperty, isAccessorDescriptor, isConst, isDataDescriptor, isEmpty, isExtensible, isFalse, isGenericDescriptor, isGetterOrSetter, isSealed, isTrue, preventExtensions, put, putConst, putConstProperty, putProperty, putProperty, redefineProperty, sameValue, sealObject, setAttributes, setAttributes, setAttributes, setGetterOrSetter, setParentScope, setPrototype, size`

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

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

    - ### Methods inherited from interface org.mozilla.javascript.Scriptable

      `delete, delete, get, get, getDefaultValue, getIds, getParentScope, getPrototype, has, has, put, put, setParentScope, setPrototype`

- - ### Constructor Detail

    - #### BoundFunction

          public BoundFunction(Context cx,
                       Scriptable scope,
                       Callable targetFunction,
                       Scriptable boundThis,
                       java.lang.Object[] boundArgs)

  - ### Method Detail

    - #### call

          public java.lang.Object call(Context cx,
                              Scriptable scope,
                              Scriptable thisObj,
                              java.lang.Object[] extraArgs)

      Description copied from class: `BaseFunction`
      Should be overridden.
      Specified by:
        `call` in interface `Callable`
      Specified by:
        `call` in interface `Function`
      Overrides:
        `call` in class `BaseFunction`
      Parameters:
        `cx` - the current Context for this thread
        `scope` - the scope to execute the function relative to. This is set to the value returned by getParentScope() except when the function is called from a closure.
        `thisObj` - the JavaScript `this` object
        `extraArgs` - the array of arguments
      Returns:
        the result of the call

    - #### construct

          public Scriptable construct(Context cx,
                             Scriptable scope,
                             java.lang.Object[] extraArgs)

      Description copied from interface: `Function`
      Call the function as a constructor. This method is invoked by the runtime in order to satisfy a use of the JavaScript `new` operator. This method is expected to create a new object and return it.
      Specified by:
        `construct` in interface `Function`
      Overrides:
        `construct` in class `BaseFunction`
      Parameters:
        `cx` - the current Context for this thread
        `scope` - an enclosing scope of the caller except when the function is called from a closure.
        `extraArgs` - the array of arguments
      Returns:
        the allocated object

    - #### hasInstance

          public boolean hasInstance(Scriptable instance)

      Description copied from class: `BaseFunction`
      Implements the instanceof operator for JavaScript Function objects.

      `foo = new Foo();
      foo instanceof Foo; // true
      `

      Specified by:
        `hasInstance` in interface `Scriptable`
      Overrides:
        `hasInstance` in class `BaseFunction`
      Parameters:
        `instance` - The value that appeared on the LHS of the instanceof operator
      Returns:
        true if the "prototype" property of "this" appears in value's prototype chain

    - #### getLength

          public int getLength()

      Overrides:
        `getLength` in class `BaseFunction`