Interface Function

All Superinterfaces:
Callable, Constructable, PropHolder<Scriptable>, Scriptable
All Known Implementing Classes:
BaseFunction, BoundFunction, Delegator, FunctionObject, IdFunctionObject, JSFunction, KnownBuiltInFunction, LambdaConstructor, LambdaFunction, NativeContinuation, NativeFunction, NativeJavaClass, NativeJavaConstructor, NativeJavaMethod, NativeJavaTopPackage, Require, Synchronizer

public interface Function extends Scriptable, Callable, Constructable
This is interface that all functions in JavaScript must implement. The interface provides for calling functions and constructors.
Author:
Norris Boyd
See Also:
  • Method Details

    • call

      Object call(Context cx, VarScope scope, Object thisObj, 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, Object nt, VarScope s, 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.

      If nt is equal to this then this call is equivalent `new f(...arguments), but reflection and super constructor calls may pass in different values.

      Specified by:
      construct in interface Constructable
      Parameters:
      cx - the current Context for this thread
      nt - the new.target for this call,
      s - an enclosing scope of the caller except when the function is called from a closure.
      args - the array of arguments
      Returns:
      the allocated object
    • getDeclarationScope

      default VarScope getDeclarationScope()
      Return the scope in which this function was declared or closed over. This is the "[[Environment]]" defined in https://tc39.es/ecma262/#sec-ecmascript-function-objects. Although this is currently precisely equal to the parent scope (or "__parent__") of an object it is useful to distinguish the two concepts as parent scopes are no longer supported by the spec in general and present a significant barrier to future optimisations.
    • isConstructor

      default boolean isConstructor()
      Return whether this function can be called as a constructor.