org.mozilla.javascript
Class BaseFunction

java.lang.Object
  extended by org.mozilla.javascript.ScriptableObject
      extended by org.mozilla.javascript.IdScriptableObject
          extended by 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.
protected  java.lang.Object getPrototypeProperty()
           
 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  boolean hasPrototypeProperty()
           
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, 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

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()

hasPrototypeProperty

protected boolean hasPrototypeProperty()

getPrototypeProperty

protected java.lang.Object getPrototypeProperty()

findPrototypeId

protected int findPrototypeId(java.lang.String s)
Overrides:
findPrototypeId in class IdScriptableObject