Package org.mozilla.javascript
Class BaseFunction
java.lang.Object
org.mozilla.javascript.ScriptableObject
org.mozilla.javascript.IdScriptableObject
org.mozilla.javascript.BaseFunction
- All Implemented Interfaces:
Serializable
,Callable
,ConstProperties
,Constructable
,DebuggableObject
,Function
,IdFunctionCall
,Scriptable
,SymbolScriptable
- Direct Known Subclasses:
ArrowFunction
,BoundFunction
,FunctionObject
,IdFunctionObject
,LambdaFunction
,NativeFunction
,NativeJavaConstructor
,NativeJavaMethod
,Require
The base class for Function objects. That is one of two purposes. It is also the prototype for
every "function" defined except those that are used as GeneratorFunctions via the ES6 "function
*" syntax.
See ECMA 15.3.
- Author:
- Norris Boyd
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.mozilla.javascript.ScriptableObject
ScriptableObject.KeyComparator
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
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
ConstructorDescriptionBaseFunction
(boolean isGenerator) BaseFunction
(Scriptable scope, Scriptable prototype) -
Method Summary
Modifier and TypeMethodDescriptioncall
(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) Should be overridden.construct
(Context cx, Scriptable scope, Object[] args) Call the function as a constructor.createObject
(Context cx, Scriptable scope) Creates new script object.execIdCall
(IdFunctionObject f, Context cx, Scriptable scope, Scriptable thisObj, Object[] args) 'thisObj' will be null if invoked as constructor, in which case * instance of Scriptable should be returned.protected void
protected int
Map name to id of instance property.protected int
int
getArity()
Return the name of the class.protected Scriptable
protected String
getInstanceIdName
(int id) Map id back to property name it defines.protected Object
getInstanceIdValue
(int id) 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 valueint
protected int
Get maximum id findInstanceIdInfo can generate.Gets the value returned by calling the typeof operator on this object.protected boolean
boolean
hasInstance
(Scriptable instance) Implements the instanceof operator for JavaScript Function objects.protected boolean
protected void
initPrototypeId
(int id) protected boolean
void
setImmunePrototypeProperty
(Object value) Make value as DontEnum, DontDelete, ReadOnly prototype property of this Function objectprotected void
setInstanceIdAttributes
(int id, int attr) Update the attributes of the given instance property.protected void
setInstanceIdValue
(int id, Object value) Set or delete id value.protected void
setPrototypeProperty
(Object prototype) void
setPrototypePropertyAttributes
(int attributes) void
setStandardPropertyAttributes
(int attributes) Sets the attributes of the "name", "length", and "arity" properties, which differ for many native objects.protected Object
Methods inherited from class org.mozilla.javascript.IdScriptableObject
activatePrototypeMap, addIdFunctionProperty, defaultGet, defaultHas, defaultPut, defineOwnProperty, delete, delete, ensureType, ensureType, exportAsJSClass, findInstanceIdInfo, findPrototypeId, get, get, getAttributes, getAttributes, getOwnPropertyDescriptor, has, has, hasPrototypeMap, initPrototypeConstructor, initPrototypeMethod, initPrototypeMethod, initPrototypeMethod, initPrototypeValue, initPrototypeValue, instanceIdInfo, put, put, setAttributes
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, defineProperty, defineProperty, defineProperty, defineProperty, delete, deleteProperty, deleteProperty, ensureScriptable, ensureScriptableObject, ensureSymbolScriptable, equivalentValues, get, get, getAllIds, getArrayPrototype, getAssociatedValue, getAttributes, getAttributes, getAttributes, getClassPrototype, getDefaultValue, getDefaultValue, getExternalArrayData, getExternalArrayLength, getFunctionPrototype, getGeneratorFunctionPrototype, getGetterOrSetter, getGetterOrSetter, getIds, getObjectPrototype, getParentScope, getProperty, getProperty, getProperty, getPropertyIds, getPrototype, getTopLevelScope, getTopScopeValue, getTypedProperty, getTypedProperty, has, hasProperty, hasProperty, hasProperty, isAccessorDescriptor, isConst, isDataDescriptor, isEmpty, isExtensible, isFalse, isGenericDescriptor, isGetterOrSetter, isSealed, isTrue, preventExtensions, put, putConst, putConstProperty, putProperty, putProperty, putProperty, querySlot, redefineProperty, sameValue, sealObject, setAttributes, setAttributes, setAttributes, setAttributes, setCommonDescriptorProperties, setExternalArrayData, 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
-
Field Details
-
Id_length
protected static final int Id_length- See Also:
-
Id_arity
protected static final int Id_arity- See Also:
-
Id_name
protected static final int Id_name- See Also:
-
Id_prototype
protected static final int Id_prototype- See Also:
-
Id_arguments
protected static final int Id_arguments- See Also:
-
MAX_INSTANCE_ID
protected static final int MAX_INSTANCE_ID- See Also:
-
-
Constructor Details
-
BaseFunction
public BaseFunction() -
BaseFunction
public BaseFunction(boolean isGenerator) -
BaseFunction
-
-
Method Details
-
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 interfaceScriptable
- Specified by:
getClassName
in classScriptableObject
-
isGeneratorFunction
protected boolean isGeneratorFunction() -
hasDefaultParameters
protected boolean hasDefaultParameters() -
getTypeOf
Gets the value returned by calling the typeof operator on this object.- Overrides:
getTypeOf
in classScriptableObject
- Returns:
- "function" or "undefined" if
ScriptableObject.avoidObjectDetection()
returnstrue
- See Also:
-
hasInstance
Implements the instanceof operator for JavaScript Function objects.foo = new Foo();
foo instanceof Foo; // true
- Specified by:
hasInstance
in interfaceScriptable
- Overrides:
hasInstance
in classScriptableObject
- 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 classIdScriptableObject
-
findInstanceIdInfo
Description copied from class:IdScriptableObject
Map name to id of instance property. Should return 0 if not found or the result ofIdScriptableObject.instanceIdInfo(int, int)
.- Overrides:
findInstanceIdInfo
in classIdScriptableObject
-
getInstanceIdName
Description copied from class:IdScriptableObject
Map id back to property name it defines.- Overrides:
getInstanceIdName
in classIdScriptableObject
-
getInstanceIdValue
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 classIdScriptableObject
-
setInstanceIdValue
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 classIdScriptableObject
-
setInstanceIdAttributes
protected void setInstanceIdAttributes(int id, int attr) Description copied from class:IdScriptableObject
Update the attributes of the given instance property. Classes which want to support changing property attributes via Object.defineProperty must override this method. The default implementation throws InternalError.- Overrides:
setInstanceIdAttributes
in classIdScriptableObject
- Parameters:
id
- the instance property idattr
- the new attribute bitset
-
fillConstructorProperties
- Overrides:
fillConstructorProperties
in classIdScriptableObject
-
initPrototypeId
protected void initPrototypeId(int id) - Overrides:
initPrototypeId
in classIdScriptableObject
-
execIdCall
public Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope, Scriptable thisObj, 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 interfaceIdFunctionCall
- Overrides:
execIdCall
in classIdScriptableObject
-
setImmunePrototypeProperty
Make value as DontEnum, DontDelete, ReadOnly prototype property of this Function object -
getClassPrototype
-
call
Should be overridden.- Specified by:
call
in interfaceCallable
- Specified by:
call
in interfaceFunction
- Parameters:
cx
- the current Context for this threadscope
- 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 JavaScriptthis
objectargs
- the array of arguments- Returns:
- the result of the call
-
construct
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 interfaceConstructable
- Specified by:
construct
in interfaceFunction
- Parameters:
cx
- the current Context for this threadscope
- 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
Creates new script object. The default implementation ofconstruct(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, java.lang.Object[])
uses this method to to get the value forthisObj
argument when invokingcall(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, org.mozilla.javascript.Scriptable, java.lang.Object[])
. The method is allowed to returnnull
to indicate thatcall(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, org.mozilla.javascript.Scriptable, java.lang.Object[])
will create a new object itself. In this caseconstruct(org.mozilla.javascript.Context, org.mozilla.javascript.Scriptable, java.lang.Object[])
will set scope and prototype on the resultcall(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
-
setStandardPropertyAttributes
public void setStandardPropertyAttributes(int attributes) Sets the attributes of the "name", "length", and "arity" properties, which differ for many native objects. -
setPrototypePropertyAttributes
public void setPrototypePropertyAttributes(int attributes) -
hasPrototypeProperty
protected boolean hasPrototypeProperty() -
getPrototypeProperty
-
setPrototypeProperty
-
setupDefaultPrototype
-
findPrototypeId
- Overrides:
findPrototypeId
in classIdScriptableObject
-