EcmaScriptObject
Overview
The EcmaScriptObject Object is the base class for all Javascript objects. It's a property bag that supports prototyping (through the prototype property). The engine uses this to hold and store all objects, arrays and even the "global" object in JavaScript, only primitive types are nOT instances of this type (Strings, int, int64, null, undefined). When instantiating a new instance of this type, make sure it's global object matches the one used by the script engine it will be used for.
Location
- Reference: RemObjects.Script.dll
- Namespace: RemObjects.Script.EcmaScript
constructor (GlobalObject)
Instantiates a new instance of this class.
Parameters:
- obj: the global object it belongs to
constructor (GlobalObject, EcmaScriptObject)
Instantiates a new instance of this class.
constructor(obj: GlobalObject; aProto: EcmaScriptObject)
EcmaScriptObject(GlobalObject obj, EcmaScriptObject aProto)
Sub New(obj As GlobalObject, aProto As EcmaScriptObject)
Parameters:
- obj: the global object it belongs to
- aProto: prototype for this object
AddValue
Add a new value to this property bag, with the default settings (deletable, modifyable)
method AddValue(aValue: String; aData: Object): EcmaScriptObject
EcmaScriptObject AddValue(String aValue, Object aData)
Function AddValue(aValue As String, aData As Object) As EcmaScriptObject
Parameters:
- aValue: the name of the value to add
- aData: the actual value
AddValues
Adds a list of values to the property bag, aData and aValue have to have the same length.
method AddValues(aValue: array of String; aData: array of Object): EcmaScriptObject
EcmaScriptObject AddValues(String[] aValue, Object[] aData)
Function AddValues(aValue As String(), aData As Object()) As EcmaScriptObject
Parameters:
- aValue: the names of the values to add
- aData: the values that belong with the names
Call
Invokes this object as if it's a function. By default this raises an error, however there are descendants that override this and invoke a method.
method Call(context: ExecutionContext; params args: array of Object): Object
Object Call(ExecutionContext context, params Object[] args)
Function Call(context As ExecutionContext, ParamArray args As Object()) As Object
Parameters:
- context: current execution context
- args: arguments
CallEx
Invokes this object as if it's a function. By default this raises an error, however there are descendants that override this and invoke a method.
method CallEx(context: ExecutionContext; aSelf: Object; params args: array of Object): Object
Object CallEx(ExecutionContext context, Object aSelf, params Object[] args)
Function CallEx(context As ExecutionContext, aSelf As Object, ParamArray args As Object()) As Object
Parameters:
- context: current execution context
- aSelf: "this" pointer
- args: arguments
CallHelper
Internal helper function for the engine.
class method CallHelper(Ref: Object; aSelf: Object; arg: array of Object; ec: ExecutionContext): Object
static Object CallHelper(Object Ref, Object aSelf, Object[] arg, ExecutionContext ec)
Shared Function CallHelper(Ref As Object, aSelf As Object, arg As Object(), ec As ExecutionContext) As Object
Parameters:
- Ref:
- aSelf:
- arg:
- ec:
CanPut
method CanPut(name: String): Boolean
Boolean CanPut(String name)
Function CanPut(name As String) As Boolean
Parameters:
- name:
Class
The name of this object, it's used by the default "toString" implementation to show what kind of type this is.
property Class: String read write;
String Class { get; set; }
Property Class() As String
Construct
Constructs a new instance of this. Used for "new something" expressions in Javascript. By default this raises an error, however there are descendants that override this and invoke a method.
method Construct(context: ExecutionContext; params args: array of Object): Object
Object Construct(ExecutionContext context, params Object[] args)
Function Construct(context As ExecutionContext, ParamArray args As Object()) As Object
Parameters:
- context: execution context
- args: arguemnts
Constructor
class var Constructor: ConstructorInfo;
static ConstructorInfo Constructor
Shared FIELD Constructor() As ConstructorInfo
DefineOwnProperty
Adds a new property with the given flags in PropertyValue. This api is used by the engine and follows the rules specified by the spec. Returns true on success.
method DefineOwnProperty(aName: String; aValue: PropertyValue; aThrow: Boolean): Boolean
Boolean DefineOwnProperty(String aName, PropertyValue aValue, Boolean aThrow)
Function DefineOwnProperty(aName As String, aValue As PropertyValue, aThrow As Boolean) As Boolean
Parameters:
- aName: Property name
- aValue: Value and properties
- aThrow: If true, raise an exception on failure
Delete
Delete a property, returns true on success.
method Delete(aName: String; aThrow: Boolean): Boolean
Boolean Delete(String aName, Boolean aThrow)
Function Delete(aName As String, aThrow As Boolean) As Boolean
Parameters:
- aName: name of the property to delete
- aThrow: If true, raise an exception on failure
Extensible
This property defines if the object is read only or not, if false, it's read only. Defaults to true.
property Extensible: Boolean read write;
Boolean Extensible { get; set; }
Property Extensible() As Boolean
FromPropertyDescriptor
Converts a property value to an descriptor object. The settings of the values are turned into properties in the object.
method FromPropertyDescriptor(aProp: PropertyValue): EcmaScriptObject
EcmaScriptObject FromPropertyDescriptor(PropertyValue aProp)
Function FromPropertyDescriptor(aProp As PropertyValue) As EcmaScriptObject
Parameters:
- aProp: value to convert
Get
Returns a property by name. If this property is a get/set pair it executes the get method.
method Get(aExecutionContext: ExecutionContext; aFlags: Int32; aName: String): Object
Object Get(ExecutionContext aExecutionContext, Int32 aFlags, String aName)
Function Get(aExecutionContext As ExecutionContext, aFlags As Int32, aName As String) As Object
Parameters:
- aExecutionContext: current context
- aFlags: Bitmask for flags; 1 = strict; 2 = used [] access
- aName: name of the property to get
GetNames
Returns the names in this object. Differs from the Names property in that it allows for changes while iterating.
method GetNames: IEnumerator<String>
IEnumerator<String> GetNames()
Function GetNames() As IEnumerator<String>
GetOwnProperty (String): PropertyValue
method GetOwnProperty(name: String): PropertyValue
PropertyValue GetOwnProperty(String name)
Function GetOwnProperty(name As String) As PropertyValue
Parameters:
- name:
GetOwnProperty (String, Boolean): PropertyValue
method GetOwnProperty(name: String; getPropertyValue: Boolean): PropertyValue
PropertyValue GetOwnProperty(String name, Boolean getPropertyValue)
Function GetOwnProperty(name As String, getPropertyValue As Boolean) As PropertyValue
Parameters:
- name:
- getPropertyValue:
GetProperty
method GetProperty(name: String): PropertyValue
PropertyValue GetProperty(String name)
Function GetProperty(name As String) As PropertyValue
Parameters:
- name:
HasProperty
Returns true if there is a property by that name.
method HasProperty(aName: String): Boolean
Boolean HasProperty(String aName)
Function HasProperty(aName As String) As Boolean
Parameters:
- aName: Name of the property to check
IntGetNames
Internal method used by the compiler.
method IntGetNames: IEnumerable<String>
IEnumerable<String> IntGetNames()
Function IntGetNames() As IEnumerable<String>
IsAccessorDescriptor
Returns true if the property passed is an accessor, that is it has a get/set method.
method IsAccessorDescriptor(aProp: PropertyValue): Boolean
Boolean IsAccessorDescriptor(PropertyValue aProp)
Function IsAccessorDescriptor(aProp As PropertyValue) As Boolean
Parameters:
- aProp: property to check
IsDataDescriptor
Returns true if the property passed is a data property.
method IsDataDescriptor(aProp: PropertyValue): Boolean
Boolean IsDataDescriptor(PropertyValue aProp)
Function IsDataDescriptor(aProp As PropertyValue) As Boolean
Parameters:
- aProp: Property to check
IsGenericDescriptor
Returns true if the property has no value at all.
method IsGenericDescriptor(aProp: PropertyValue): Boolean
Boolean IsGenericDescriptor(PropertyValue aProp)
Function IsGenericDescriptor(aProp As PropertyValue) As Boolean
Parameters:
- aProp: Property
Method_Call
class var Method_Call: MethodInfo;
static MethodInfo Method_Call
Shared FIELD Method_Call() As MethodInfo
Method_CallEx
class var Method_CallEx: MethodInfo;
static MethodInfo Method_CallEx
Shared FIELD Method_CallEx() As MethodInfo
Method_CallHelper
class var Method_CallHelper: MethodInfo;
static MethodInfo Method_CallHelper
Shared FIELD Method_CallHelper() As MethodInfo
Method_Construct
class var Method_Construct: MethodInfo;
static MethodInfo Method_Construct
Shared FIELD Method_Construct() As MethodInfo
Method_GetNames
class var Method_GetNames: MethodInfo;
static MethodInfo Method_GetNames
Shared FIELD Method_GetNames() As MethodInfo
Method_ObjectLiteralSet
class var Method_ObjectLiteralSet: MethodInfo;
static MethodInfo Method_ObjectLiteralSet
Shared FIELD Method_ObjectLiteralSet() As MethodInfo
Names
Returns an enumerable that holds all property names in the object.
property Names: IEnumerable<String> read;
IEnumerable<String> Names { get; }
ReadOnly Property Names() As IEnumerable<String>
ObjectLiteralSet
Internal engine function.
method ObjectLiteralSet(aName: String; aMode: FunctionDeclarationType; aData: Object; aStrict: Boolean): EcmaScriptObject
EcmaScriptObject ObjectLiteralSet(String aName, FunctionDeclarationType aMode, Object aData, Boolean aStrict)
Function ObjectLiteralSet(aName As String, aMode As FunctionDeclarationType, aData As Object, aStrict As Boolean) As EcmaScriptObject
Parameters:
- aName:
- aMode:
- aData:
- aStrict:
Prototype
Defines the prototype of the object. If not set, it's the default "object" prototype (Object.prototype), when setting this manually, make sure it's not circular.
property Prototype: EcmaScriptObject read write;
EcmaScriptObject Prototype { get; set; }
Property Prototype() As EcmaScriptObject
Put
method Put(context: ExecutionContext; propertyName: String; propertyValue: Object; flags: Int32): Object
Object Put(ExecutionContext context, String propertyName, Object propertyValue, Int32 flags)
Function Put(context As ExecutionContext, propertyName As String, propertyValue As Object, flags As Int32) As Object
Parameters:
- context:
- propertyName:
- propertyValue:
- flags:
Root
Returns the GlobalObject this object belongs to.
property Root: GlobalObject read write;
GlobalObject Root { get; set; }
Property Root() As GlobalObject
ToPropertyDescriptor
Converts a descriptor object back to a PropertyValue.
method ToPropertyDescriptor(aProp: EcmaScriptObject): PropertyValue
PropertyValue ToPropertyDescriptor(EcmaScriptObject aProp)
Function ToPropertyDescriptor(aProp As EcmaScriptObject) As PropertyValue
Parameters:
- aProp: property to convert
ToString
Returns a string representation of this object.
method ToString: String
String ToString()
Function ToString() As String
Value
Holds the primitive type this object wraps, generally only used by the Number and String constructor.
property Value: Object read write;
Object Value { get; set; }
Property Value() As Object
Values
Returns the property bag that holds the actual values.
property Values: Dictionary<String, PropertyValue> read;
Dictionary<String, PropertyValue> Values { get; }
ReadOnly Property Values() As Dictionary<String, PropertyValue>
Constructor
class var Constructor: ConstructorInfo;
static ConstructorInfo Constructor
Shared FIELD Constructor() As ConstructorInfo
Method_Call
class var Method_Call: MethodInfo;
static MethodInfo Method_Call
Shared FIELD Method_Call() As MethodInfo
Method_CallEx
class var Method_CallEx: MethodInfo;
static MethodInfo Method_CallEx
Shared FIELD Method_CallEx() As MethodInfo
Method_CallHelper
class var Method_CallHelper: MethodInfo;
static MethodInfo Method_CallHelper
Shared FIELD Method_CallHelper() As MethodInfo
Method_Construct
class var Method_Construct: MethodInfo;
static MethodInfo Method_Construct
Shared FIELD Method_Construct() As MethodInfo
Method_GetNames
class var Method_GetNames: MethodInfo;
static MethodInfo Method_GetNames
Shared FIELD Method_GetNames() As MethodInfo
Method_ObjectLiteralSet
class var Method_ObjectLiteralSet: MethodInfo;
static MethodInfo Method_ObjectLiteralSet
Shared FIELD Method_ObjectLiteralSet() As MethodInfo
Class
The name of this object, it's used by the default "toString" implementation to show what kind of type this is.
property Class: String read write;
String Class { get; set; }
Property Class() As String
Extensible
This property defines if the object is read only or not, if false, it's read only. Defaults to true.
property Extensible: Boolean read write;
Boolean Extensible { get; set; }
Property Extensible() As Boolean
Names
Returns an enumerable that holds all property names in the object.
property Names: IEnumerable<String> read;
IEnumerable<String> Names { get; }
ReadOnly Property Names() As IEnumerable<String>
Prototype
Defines the prototype of the object. If not set, it's the default "object" prototype (Object.prototype), when setting this manually, make sure it's not circular.
property Prototype: EcmaScriptObject read write;
EcmaScriptObject Prototype { get; set; }
Property Prototype() As EcmaScriptObject
Root
Returns the GlobalObject this object belongs to.
property Root: GlobalObject read write;
GlobalObject Root { get; set; }
Property Root() As GlobalObject
Value
Holds the primitive type this object wraps, generally only used by the Number and String constructor.
property Value: Object read write;
Object Value { get; set; }
Property Value() As Object
Values
Returns the property bag that holds the actual values.
property Values: Dictionary<String, PropertyValue> read;
Dictionary<String, PropertyValue> Values { get; }
ReadOnly Property Values() As Dictionary<String, PropertyValue>
CallHelper
Internal helper function for the engine.
class method CallHelper(Ref: Object; aSelf: Object; arg: array of Object; ec: ExecutionContext): Object
static Object CallHelper(Object Ref, Object aSelf, Object[] arg, ExecutionContext ec)
Shared Function CallHelper(Ref As Object, aSelf As Object, arg As Object(), ec As ExecutionContext) As Object
Parameters:
- Ref:
- aSelf:
- arg:
- ec:
constructor (GlobalObject)
Instantiates a new instance of this class.
Parameters:
- obj: the global object it belongs to
constructor (GlobalObject, EcmaScriptObject)
Instantiates a new instance of this class.
constructor(obj: GlobalObject; aProto: EcmaScriptObject)
EcmaScriptObject(GlobalObject obj, EcmaScriptObject aProto)
Sub New(obj As GlobalObject, aProto As EcmaScriptObject)
Parameters:
- obj: the global object it belongs to
- aProto: prototype for this object
AddValue
Add a new value to this property bag, with the default settings (deletable, modifyable)
method AddValue(aValue: String; aData: Object): EcmaScriptObject
EcmaScriptObject AddValue(String aValue, Object aData)
Function AddValue(aValue As String, aData As Object) As EcmaScriptObject
Parameters:
- aValue: the name of the value to add
- aData: the actual value
AddValues
Adds a list of values to the property bag, aData and aValue have to have the same length.
method AddValues(aValue: array of String; aData: array of Object): EcmaScriptObject
EcmaScriptObject AddValues(String[] aValue, Object[] aData)
Function AddValues(aValue As String(), aData As Object()) As EcmaScriptObject
Parameters:
- aValue: the names of the values to add
- aData: the values that belong with the names
Call
Invokes this object as if it's a function. By default this raises an error, however there are descendants that override this and invoke a method.
method Call(context: ExecutionContext; params args: array of Object): Object
Object Call(ExecutionContext context, params Object[] args)
Function Call(context As ExecutionContext, ParamArray args As Object()) As Object
Parameters:
- context: current execution context
- args: arguments
CallEx
Invokes this object as if it's a function. By default this raises an error, however there are descendants that override this and invoke a method.
method CallEx(context: ExecutionContext; aSelf: Object; params args: array of Object): Object
Object CallEx(ExecutionContext context, Object aSelf, params Object[] args)
Function CallEx(context As ExecutionContext, aSelf As Object, ParamArray args As Object()) As Object
Parameters:
- context: current execution context
- aSelf: "this" pointer
- args: arguments
CanPut
method CanPut(name: String): Boolean
Boolean CanPut(String name)
Function CanPut(name As String) As Boolean
Parameters:
- name:
Construct
Constructs a new instance of this. Used for "new something" expressions in Javascript. By default this raises an error, however there are descendants that override this and invoke a method.
method Construct(context: ExecutionContext; params args: array of Object): Object
Object Construct(ExecutionContext context, params Object[] args)
Function Construct(context As ExecutionContext, ParamArray args As Object()) As Object
Parameters:
- context: execution context
- args: arguemnts
DefineOwnProperty
Adds a new property with the given flags in PropertyValue. This api is used by the engine and follows the rules specified by the spec. Returns true on success.
method DefineOwnProperty(aName: String; aValue: PropertyValue; aThrow: Boolean): Boolean
Boolean DefineOwnProperty(String aName, PropertyValue aValue, Boolean aThrow)
Function DefineOwnProperty(aName As String, aValue As PropertyValue, aThrow As Boolean) As Boolean
Parameters:
- aName: Property name
- aValue: Value and properties
- aThrow: If true, raise an exception on failure
Delete
Delete a property, returns true on success.
method Delete(aName: String; aThrow: Boolean): Boolean
Boolean Delete(String aName, Boolean aThrow)
Function Delete(aName As String, aThrow As Boolean) As Boolean
Parameters:
- aName: name of the property to delete
- aThrow: If true, raise an exception on failure
FromPropertyDescriptor
Converts a property value to an descriptor object. The settings of the values are turned into properties in the object.
method FromPropertyDescriptor(aProp: PropertyValue): EcmaScriptObject
EcmaScriptObject FromPropertyDescriptor(PropertyValue aProp)
Function FromPropertyDescriptor(aProp As PropertyValue) As EcmaScriptObject
Parameters:
- aProp: value to convert
Get
Returns a property by name. If this property is a get/set pair it executes the get method.
method Get(aExecutionContext: ExecutionContext; aFlags: Int32; aName: String): Object
Object Get(ExecutionContext aExecutionContext, Int32 aFlags, String aName)
Function Get(aExecutionContext As ExecutionContext, aFlags As Int32, aName As String) As Object
Parameters:
- aExecutionContext: current context
- aFlags: Bitmask for flags; 1 = strict; 2 = used [] access
- aName: name of the property to get
GetNames
Returns the names in this object. Differs from the Names property in that it allows for changes while iterating.
method GetNames: IEnumerator<String>
IEnumerator<String> GetNames()
Function GetNames() As IEnumerator<String>
GetOwnProperty (String): PropertyValue
method GetOwnProperty(name: String): PropertyValue
PropertyValue GetOwnProperty(String name)
Function GetOwnProperty(name As String) As PropertyValue
Parameters:
- name:
GetOwnProperty (String, Boolean): PropertyValue
method GetOwnProperty(name: String; getPropertyValue: Boolean): PropertyValue
PropertyValue GetOwnProperty(String name, Boolean getPropertyValue)
Function GetOwnProperty(name As String, getPropertyValue As Boolean) As PropertyValue
Parameters:
- name:
- getPropertyValue:
GetProperty
method GetProperty(name: String): PropertyValue
PropertyValue GetProperty(String name)
Function GetProperty(name As String) As PropertyValue
Parameters:
- name:
HasProperty
Returns true if there is a property by that name.
method HasProperty(aName: String): Boolean
Boolean HasProperty(String aName)
Function HasProperty(aName As String) As Boolean
Parameters:
- aName: Name of the property to check
IntGetNames
Internal method used by the compiler.
method IntGetNames: IEnumerable<String>
IEnumerable<String> IntGetNames()
Function IntGetNames() As IEnumerable<String>
IsAccessorDescriptor
Returns true if the property passed is an accessor, that is it has a get/set method.
method IsAccessorDescriptor(aProp: PropertyValue): Boolean
Boolean IsAccessorDescriptor(PropertyValue aProp)
Function IsAccessorDescriptor(aProp As PropertyValue) As Boolean
Parameters:
- aProp: property to check
IsDataDescriptor
Returns true if the property passed is a data property.
method IsDataDescriptor(aProp: PropertyValue): Boolean
Boolean IsDataDescriptor(PropertyValue aProp)
Function IsDataDescriptor(aProp As PropertyValue) As Boolean
Parameters:
- aProp: Property to check
IsGenericDescriptor
Returns true if the property has no value at all.
method IsGenericDescriptor(aProp: PropertyValue): Boolean
Boolean IsGenericDescriptor(PropertyValue aProp)
Function IsGenericDescriptor(aProp As PropertyValue) As Boolean
Parameters:
- aProp: Property
ObjectLiteralSet
Internal engine function.
method ObjectLiteralSet(aName: String; aMode: FunctionDeclarationType; aData: Object; aStrict: Boolean): EcmaScriptObject
EcmaScriptObject ObjectLiteralSet(String aName, FunctionDeclarationType aMode, Object aData, Boolean aStrict)
Function ObjectLiteralSet(aName As String, aMode As FunctionDeclarationType, aData As Object, aStrict As Boolean) As EcmaScriptObject
Parameters:
- aName:
- aMode:
- aData:
- aStrict:
Put
method Put(context: ExecutionContext; propertyName: String; propertyValue: Object; flags: Int32): Object
Object Put(ExecutionContext context, String propertyName, Object propertyValue, Int32 flags)
Function Put(context As ExecutionContext, propertyName As String, propertyValue As Object, flags As Int32) As Object
Parameters:
- context:
- propertyName:
- propertyValue:
- flags:
ToPropertyDescriptor
Converts a descriptor object back to a PropertyValue.
method ToPropertyDescriptor(aProp: EcmaScriptObject): PropertyValue
PropertyValue ToPropertyDescriptor(EcmaScriptObject aProp)
Function ToPropertyDescriptor(aProp As EcmaScriptObject) As PropertyValue
Parameters:
- aProp: property to convert
ToString
Returns a string representation of this object.
method ToString: String
String ToString()
Function ToString() As String