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


 

constructor (GlobalObject)

Instantiates a new instance of this class.

 

constructor(obj: GlobalObject)

 

EcmaScriptObject(GlobalObject obj)

 

Sub New(obj As GlobalObject)

Parameters:

  • obj: the global object it belongs to

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.

 

constructor(obj: GlobalObject)

 

EcmaScriptObject(GlobalObject obj)

 

Sub New(obj As GlobalObject)

Parameters:

  • obj: the global object it belongs to

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