|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectnet.sourceforge.htmlunit.corejs.javascript.ScriptableObject
net.sourceforge.htmlunit.corejs.javascript.IdScriptableObject
net.sourceforge.htmlunit.corejs.javascript.TopLevel
public class TopLevel
A top-level scope object that provides special means to cache and preserve the initial values of the built-in constructor properties for better ECMAScript compliance.
ECMA 262 requires that most constructors used internally construct objects with the original prototype object as value of their [[Prototype]] internal property. Since built-in global constructors are defined as writable and deletable, this means they should be cached to protect against redefinition at runtime.
In order to implement this efficiently, this class provides a mechanism to
access the original built-in global constructors and their prototypes via
numeric class-ids. To make use of this, the new
ScriptRuntime.newBuiltinObject and
ScriptRuntime.setBuiltinProtoAndParent methods should be used to create and
initialize objects of built-in classes instead of their generic counterparts.
Calling
Context.initStandardObjects()
with an instance of this class as argument will automatically cache built-in
classes after initialization. For other setups involving top-level scopes
that inherit global properties from their proptotypes (e.g. with dynamic
scopes) embeddings should explicitly call cacheBuiltins() to
initialize the class cache for each top-level scope.
| Nested Class Summary | |
|---|---|
static class |
TopLevel.Builtins
An enumeration of built-in ECMAScript objects. |
| Field Summary |
|---|
| Fields inherited from class net.sourceforge.htmlunit.corejs.javascript.ScriptableObject |
|---|
CONST, DONTENUM, EMPTY, PERMANENT, READONLY, UNINITIALIZED_CONST |
| Fields inherited from interface net.sourceforge.htmlunit.corejs.javascript.Scriptable |
|---|
NOT_FOUND |
| Constructor Summary | |
|---|---|
TopLevel()
|
|
| Method Summary | |
|---|---|
void |
cacheBuiltins()
Cache the built-in ECMAScript objects to protect them against modifications by the script. |
static Function |
getBuiltinCtor(Context cx,
Scriptable scope,
TopLevel.Builtins type)
Static helper method to get a built-in object constructor with the given type from the given scope. |
BaseFunction |
getBuiltinCtor(TopLevel.Builtins type)
Get the cached built-in object constructor from this scope with the given type. |
static Scriptable |
getBuiltinPrototype(Scriptable scope,
TopLevel.Builtins type)
Static helper method to get a built-in object prototype with the given type from the given scope. |
Scriptable |
getBuiltinPrototype(TopLevel.Builtins type)
Get the cached built-in object prototype from this scope with the given type. |
java.lang.String |
getClassName()
Return the name of the class. |
| Methods inherited from class net.sourceforge.htmlunit.corejs.javascript.IdScriptableObject |
|---|
activatePrototypeMap, addIdFunctionProperty, defaultGet, defaultPut, defineOwnProperty, delete, execIdCall, exportAsJSClass, fillConstructorProperties, findInstanceIdInfo, findPrototypeId, get, getAttributes, getInstanceIdName, getInstanceIdValue, getMaxInstanceId, getOwnPropertyDescriptor, has, hasPrototypeMap, incompatibleCallError, initPrototypeConstructor, initPrototypeId, initPrototypeMethod, initPrototypeValue, instanceIdInfo, put, setAttributes, setInstanceIdAttributes, setInstanceIdValue |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public TopLevel()
| Method Detail |
|---|
public java.lang.String getClassName()
ScriptableObject
getClassName in interface ScriptablegetClassName in class ScriptableObjectpublic void cacheBuiltins()
ScriptRuntime.initStandardObjects if the scope argument is an instance
of this class. It only has to be called by the embedding if a top-level
scope is not initialized through initStandardObjects().
public static Function getBuiltinCtor(Context cx,
Scriptable scope,
TopLevel.Builtins type)
type from the given scope. If the scope is not
an instance of this class or does have a cache of built-ins, the
constructor is looked up via normal property lookup.
cx - the current Contextscope - the top-level scopetype - the built-in type
public static Scriptable getBuiltinPrototype(Scriptable scope,
TopLevel.Builtins type)
type from the given scope. If the scope is not
an instance of this class or does have a cache of built-ins, the
prototype is looked up via normal property lookup.
scope - the top-level scopetype - the built-in type
public BaseFunction getBuiltinCtor(TopLevel.Builtins type)
type. Returns null if cacheBuiltins() has not been
called on this object.
type - the built-in type
public Scriptable getBuiltinPrototype(TopLevel.Builtins type)
type. Returns null if cacheBuiltins() has not been
called on this object.
type - the built-in type
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||