org.mozilla.javascript

## Interface Function

- All Superinterfaces:
    Callable, Scriptable
  All Known Implementing Classes:
    ArrowFunction, BaseFunction, BoundFunction, Delegator, FunctionObject, IdFunctionObject, IdFunctionObjectES6, NativeContinuation, NativeFunction, NativeJavaClass, NativeJavaConstructor, NativeJavaMethod, NativeJavaTopPackage, NativeRegExp, Require, Synchronizer

      public interface Function
      extends Scriptable, Callable

  This is interface that all functions in JavaScript must implement. The interface provides for calling functions and constructors.
  See Also:
    `Scriptable`

- - ### Field Summary

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

      `NOT_FOUND`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `call(Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)` Call the function.
    `Scriptable` | `construct(Context cx, Scriptable scope, java.lang.Object[] args)` Call the function as a constructor.

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

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

- - ### Method Detail

    - #### call

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

      Call the function. Note that the array of arguments is not guaranteed to have length greater than 0.
      Specified by:
        `call` in interface `Callable`
      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
        `args` - the array of arguments
      Returns:
        the result of the call

    - #### construct

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

      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.
      Parameters:
        `cx` - the current Context for this thread
        `scope` - an enclosing scope of the caller except when the function is called from a closure.
        `args` - the array of arguments
      Returns:
        the allocated object