## org.mozilla.javascript
Class BaseFunction

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

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

Direct Known Subclasses:
  BoundFunction, FunctionObject, IdFunctionObject, NativeFunction, NativeJavaConstructor, NativeJavaMethod, Require

    public class BaseFunction

extends IdScriptableObject
implements Function

The base class for Function objects See ECMA 15.3.

Author:
  Norris Boyd
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
`BaseFunction()`
`BaseFunction(Scriptable scope, Scriptable prototype)`

Method Summary
`java.lang.Object` `call(Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)` Should be overridden.
`Scriptable` `construct(Context cx, Scriptable scope, java.lang.Object[] args)` Call the function as a constructor.
`Scriptable` `createObject(Context cx, Scriptable scope)` Creates new script object.
`java.lang.Object` `execIdCall(IdFunctionObject f, Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)` 'thisObj' will be null if invoked as constructor, in which case instance of Scriptable should be returned.
`protected void` `fillConstructorProperties(IdFunctionObject ctor)`
`protected int` `findInstanceIdInfo(java.lang.String s)` Map name to id of instance property.
`protected int` `findPrototypeId(java.lang.String s)`
`int` `getArity()`
`java.lang.String` `getClassName()` Return the name of the class.
`protected Scriptable` `getClassPrototype()`
`java.lang.String` `getFunctionName()`
`protected java.lang.String` `getInstanceIdName(int id)` Map id back to property name it defines.
`protected java.lang.Object` `getInstanceIdValue(int id)` Get id value.
`int` `getLength()`
`protected int` `getMaxInstanceId()` Get maximum id findInstanceIdInfo can generate.
`java.lang.String` `getTypeOf()` Gets the value returned by calling the typeof operator on this object.
`boolean` `hasInstance(Scriptable instance)` Implements the instanceof operator for JavaScript Function objects.
`protected void` `initPrototypeId(int id)`
`void` `setImmunePrototypeProperty(java.lang.Object value)` Make value as DontEnum, DontDelete, ReadOnly prototype property of this Function object
`protected void` `setInstanceIdValue(int id, java.lang.Object value)` Set or delete id value.

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`

Methods inherited from class org.mozilla.javascript.ScriptableObject

`applyDescriptorToAttributeBitset, associateValue, avoidObjectDetection, buildDataDescriptor, callMethod, callMethod, defineClass, defineClass, defineClass, defineConst, defineConstProperty, defineFunctionProperties, defineOwnProperties, 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, 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

### BaseFunction

    public BaseFunction()

### BaseFunction

    public BaseFunction(Scriptable scope,
                        Scriptable prototype)

Method Detail

### getClassName

    public java.lang.String getClassName()

  Description copied from class: `ScriptableObject`
  Return the name of the class. This is typically the same name as the constructor. Classes extending ScriptableObject must implement this abstract method.

  Specified by:
    `getClassName` in interface `Scriptable`
  Specified by:
    `getClassName` in class `ScriptableObject`

### getTypeOf

    public java.lang.String getTypeOf()

  Gets the value returned by calling the typeof operator on this object.

  Overrides:
    `getTypeOf` in class `ScriptableObject`
  Returns:
    "function" or "undefined" if `ScriptableObject.avoidObjectDetection()` returns `true`
  See Also:
    `ScriptableObject.getTypeOf()`

### hasInstance

    public boolean hasInstance(Scriptable instance)

  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 `ScriptableObject`
  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

### getMaxInstanceId

    protected int getMaxInstanceId()

  Description copied from class: `IdScriptableObject`
  Get maximum id findInstanceIdInfo can generate.

  Overrides:
    `getMaxInstanceId` in class `IdScriptableObject`

### findInstanceIdInfo

    protected int findInstanceIdInfo(java.lang.String s)

  Description copied from class: `IdScriptableObject`
  Map name to id of instance property. Should return 0 if not found or the result of `IdScriptableObject.instanceIdInfo(int, int)`.

  Overrides:
    `findInstanceIdInfo` in class `IdScriptableObject`

### getInstanceIdName

    protected java.lang.String getInstanceIdName(int id)

  Description copied from class: `IdScriptableObject`
  Map id back to property name it defines.

  Overrides:
    `getInstanceIdName` in class `IdScriptableObject`

### getInstanceIdValue

    protected java.lang.Object getInstanceIdValue(int id)

  Description copied from class: `IdScriptableObject`
  Get id value. If id value is constant, descendant can call cacheIdValue to store value in the permanent cache. Default implementation creates IdFunctionObject instance for given id and cache its value

  Overrides:
    `getInstanceIdValue` in class `IdScriptableObject`

### setInstanceIdValue

    protected void setInstanceIdValue(int id,
                                      java.lang.Object value)

  Description copied from class: `IdScriptableObject`
  Set or delete id value. If value == NOT_FOUND , the implementation should make sure that the following getInstanceIdValue return NOT_FOUND.

  Overrides:
    `setInstanceIdValue` in class `IdScriptableObject`

### fillConstructorProperties

    protected void fillConstructorProperties(IdFunctionObject ctor)

  Overrides:
    `fillConstructorProperties` in class `IdScriptableObject`

### initPrototypeId

    protected void initPrototypeId(int id)

  Overrides:
    `initPrototypeId` in class `IdScriptableObject`

### execIdCall

    public java.lang.Object execIdCall(IdFunctionObject f,
                                       Context cx,
                                       Scriptable scope,
                                       Scriptable thisObj,
                                       java.lang.Object[] args)

  Description copied from class: `IdScriptableObject`
  'thisObj' will be null if invoked as constructor, in which case instance of Scriptable should be returned.

  Specified by:
    `execIdCall` in interface `IdFunctionCall`
  Overrides:
    `execIdCall` in class `IdScriptableObject`

### setImmunePrototypeProperty

    public void setImmunePrototypeProperty(java.lang.Object value)

  Make value as DontEnum, DontDelete, ReadOnly prototype property of this Function object

### getClassPrototype

    protected Scriptable getClassPrototype()

### call

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

  Should be overridden.

  Specified by:
    `call` in interface `Callable`
  Specified by:
    `call` in interface `Function`
  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

    public Scriptable construct(Context cx,
                                Scriptable scope,
                                java.lang.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.

  Specified by:
    `construct` in interface `Function`
  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

### createObject

    public Scriptable createObject(Context cx,
                                   Scriptable scope)

  Creates new script object. The default implementation of `construct(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, java.lang.Object[])` uses the method to to get the value for `thisObj` argument when invoking `call(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, org.mozilla.javascript.Scriptable, java.lang.Object[])`. The methos is allowed to return `null` to indicate that `call(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, org.mozilla.javascript.Scriptable, java.lang.Object[])` will create a new object itself. In this case `construct(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, java.lang.Object[])` will set scope and prototype on the result `call(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, org.mozilla.javascript.Scriptable, java.lang.Object[])` unless they are already set.

### getArity

    public int getArity()

### getLength

    public int getLength()

### getFunctionName

    public java.lang.String getFunctionName()

### findPrototypeId

    protected int findPrototypeId(java.lang.String s)

  Overrides:
    `findPrototypeId` in class `IdScriptableObject`