Class LambdaFunction

All Implemented Interfaces:
Serializable, Callable, ConstProperties<Scriptable>, Constructable, DebuggableObject, Function, PropHolder<Scriptable>, Scriptable, SymbolScriptable
Direct Known Subclasses:
KnownBuiltInFunction, LambdaConstructor

public class LambdaFunction extends BaseFunction
This class implements a single JavaScript function that has the prototype of the built-in Function class, and which is implemented using a single function that can easily be implemented using a lambda expression.
See Also:
  • Field Details

  • Constructor Details

    • LambdaFunction

      public LambdaFunction(VarScope scope, String name, int length, SerializableCallable target, boolean defaultPrototype)
      Create a new function. The new object will have the Function prototype and no parent. The caller is responsible for binding this object to the appropriate scope.
      Parameters:
      scope - scope of the calling context
      name - name of the function
      length - the arity of the function
      target - an object that implements the function in Java. Since Callable is a single-function interface this will typically be implemented as a lambda.
      defaultPrototype - set up a prototype on the new function
    • LambdaFunction

      public LambdaFunction(VarScope scope, String name, int length, SerializableCallable target)
      Create a new function. The new object will have the Function prototype and no parent. The caller is responsible for binding this object to the appropriate scope.
      Parameters:
      scope - scope of the calling context
      name - name of the function
      length - the arity of the function
      target - an object that implements the function in Java. Since Callable is a single-function interface this will typically be implemented as a lambda.
    • LambdaFunction

      public LambdaFunction(VarScope scope, String name, int length, Object prototype, SerializableCallable target)
      Create a new function. The new object will have the Function prototype and no parent. The caller is responsible for binding this object to the appropriate scope.
      Parameters:
      scope - scope of the calling context
      name - name of the function
      length - the arity of the function
      prototype - prototype to set for this function
      target - an object that implements the function in Java. Since Callable is a single-function interface this will typically be implemented as a lambda.
    • LambdaFunction

      public LambdaFunction(VarScope scope, int length, SerializableCallable target)
      Create a new built-in function, with no name, and no default prototype.
  • Method Details

    • call

      public Object call(Context cx, Object nt, VarScope scope, Object thisObj, Object[] args)
      Overrides:
      call in class BaseFunction
    • construct

      public Scriptable construct(Context cx, Object nt, VarScope scope, Object[] args)
      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.

      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
      Specified by:
      construct in interface Function
      Overrides:
      construct in class BaseFunction
      Parameters:
      cx - the current Context for this thread
      nt - the new.target for this call,
      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
    • getLength

      public int getLength()
      Overrides:
      getLength in class BaseFunction
    • getArity

      public int getArity()
      Overrides:
      getArity in class BaseFunction
    • getFunctionName

      public String getFunctionName()
      Overrides:
      getFunctionName in class BaseFunction
    • isConstructor

      public boolean isConstructor()
      Description copied from interface: Function
      Return whether this function can be called as a constructor.
      Specified by:
      isConstructor in interface Function
      Overrides:
      isConstructor in class BaseFunction