public class BaseFunction extends IdScriptableObject implements Function
See ECMA 15.3.
ScriptableObject.KeyComparator
CONST, DONTENUM, EMPTY, PERMANENT, READONLY, UNINITIALIZED_CONST
NOT_FOUND
Constructor and Description |
---|
BaseFunction() |
BaseFunction(boolean isGenerator) |
BaseFunction(Scriptable scope,
Scriptable prototype) |
Modifier and Type | Method and Description |
---|---|
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) |
protected boolean |
isGeneratorFunction() |
void |
setImmunePrototypeProperty(java.lang.Object value)
Make value as DontEnum, DontDelete, ReadOnly prototype property of this Function object
|
protected void |
setInstanceIdAttributes(int id,
int attr)
Update the attributes of the given instance property.
|
protected void |
setInstanceIdValue(int id,
java.lang.Object value)
Set or delete id value.
|
protected void |
setPrototypeProperty(java.lang.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 java.lang.Object |
setupDefaultPrototype() |
activatePrototypeMap, addIdFunctionProperty, defaultGet, defaultHas, defaultPut, defineOwnProperty, delete, delete, ensureType, exportAsJSClass, findInstanceIdInfo, findPrototypeId, get, get, getAttributes, getAttributes, getOwnPropertyDescriptor, has, has, hasPrototypeMap, initPrototypeConstructor, initPrototypeMethod, initPrototypeMethod, initPrototypeMethod, initPrototypeValue, initPrototypeValue, instanceIdInfo, put, put, setAttributes
applyDescriptorToAttributeBitset, associateValue, avoidObjectDetection, buildDataDescriptor, callMethod, callMethod, checkPropertyChange, checkPropertyDefinition, defineClass, defineClass, defineClass, defineConst, defineConstProperty, defineFunctionProperties, defineOwnProperties, defineOwnProperty, 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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
delete, delete, get, get, getDefaultValue, getIds, getParentScope, getPrototype, has, has, put, put, setParentScope, setPrototype
public BaseFunction()
public BaseFunction(boolean isGenerator)
public BaseFunction(Scriptable scope, Scriptable prototype)
public java.lang.String getClassName()
ScriptableObject
This is typically the same name as the constructor. Classes extending ScriptableObject must implement this abstract method.
getClassName
in interface Scriptable
getClassName
in class ScriptableObject
protected boolean isGeneratorFunction()
public java.lang.String getTypeOf()
getTypeOf
in class ScriptableObject
ScriptableObject.avoidObjectDetection()
returns true
ScriptableObject.getTypeOf()
public boolean hasInstance(Scriptable instance)
foo = new Foo();
foo instanceof Foo; // true
hasInstance
in interface Scriptable
hasInstance
in class ScriptableObject
instance
- The value that appeared on the LHS of the instanceof operatorprotected int getMaxInstanceId()
IdScriptableObject
getMaxInstanceId
in class IdScriptableObject
protected int findInstanceIdInfo(java.lang.String s)
IdScriptableObject
IdScriptableObject.instanceIdInfo(int, int)
.findInstanceIdInfo
in class IdScriptableObject
protected java.lang.String getInstanceIdName(int id)
IdScriptableObject
getInstanceIdName
in class IdScriptableObject
protected java.lang.Object getInstanceIdValue(int id)
IdScriptableObject
getInstanceIdValue
in class IdScriptableObject
protected void setInstanceIdValue(int id, java.lang.Object value)
IdScriptableObject
setInstanceIdValue
in class IdScriptableObject
protected void setInstanceIdAttributes(int id, int attr)
IdScriptableObject
setInstanceIdAttributes
in class IdScriptableObject
id
- the instance property idattr
- the new attribute bitsetprotected void fillConstructorProperties(IdFunctionObject ctor)
fillConstructorProperties
in class IdScriptableObject
protected void initPrototypeId(int id)
initPrototypeId
in class IdScriptableObject
public java.lang.Object execIdCall(IdFunctionObject f, Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)
IdScriptableObject
execIdCall
in interface IdFunctionCall
execIdCall
in class IdScriptableObject
public void setImmunePrototypeProperty(java.lang.Object value)
protected Scriptable getClassPrototype()
public java.lang.Object call(Context cx, Scriptable scope, Scriptable thisObj, java.lang.Object[] args)
call
in interface Callable
call
in interface Function
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 JavaScript this
objectargs
- the array of argumentspublic Scriptable construct(Context cx, Scriptable scope, java.lang.Object[] args)
Function
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.
construct
in interface Constructable
construct
in interface Function
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 argumentspublic Scriptable createObject(Context cx, Scriptable scope)
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.public int getArity()
public int getLength()
public java.lang.String getFunctionName()
public void setStandardPropertyAttributes(int attributes)
public void setPrototypePropertyAttributes(int attributes)
protected boolean hasPrototypeProperty()
protected java.lang.Object getPrototypeProperty()
protected void setPrototypeProperty(java.lang.Object prototype)
protected java.lang.Object setupDefaultPrototype()
protected int findPrototypeId(java.lang.String s)
findPrototypeId
in class IdScriptableObject