Objects

The topics are:

Script Objects

Objects are values which do not contain any predefined properties or methods (except the Built-in Methods), but where new ones can be added. A new, empty object can be created using the Object constructor. For example, the following program creates a new object, stores it in the variable myCar, and adds the properties "name" and "year" to it:

myCar = new Object() // o contains no properties

myCar.name = "Ford"

myCar.year = 1985

Now:

myCar.name -> "Ford"

myCar.year -> 1985

Defining Methods

Since a method is really a property which contains a Functions , defining a method simply consists in defining a regular function, then assigning it to a property.

For example, the following program adds a method "start" to the myCar object defined in Script Objects:

function start_engine() {

writeln("vroom vroom\n")

}

 

myCar.start = start_engine

Now, the expression myCar.start() will call the function defined as start_engine. Note that the only reason for using a different name for the function and for the method is to avoid confusion; we could have written:

function start() {

writeln("vroom vroom\n")

}

 

myCar.start = start

The this Keyword

Inside methods, the this keyword can be used to reference the calling object. For example, the following program defines a method getName, which returns the value of the name property of the calling object, and adds this method to myCar:

function get_name() {

return this.name

}

 

myCar.getName = get_name

Inside constructors, this references the object created by the constructor. When used in a non-method context, this returns a reference on the global object. The global object contains variables declared at toplevel, and built-in functions and constructors.

Object Constructor

Objects are created using the following constructor:

Script Object Constructor

Syntax

Effect

new Object( )

Returns a new object with no properties.

User-defined Constructors

In addition to the Object constructor, any user-defined function can be used as an object constructor, using the following syntax:

Script User-defined Constructor

Syntax

Effect

new function(arg1, ..., argn)

Creates a new object, then calls function(arg1, ..., argn) to initialize it.

Inside the constructor, the keyword this can be used to make reference to the object being initialized.

For example, the following program defines a constructor for cars:

function Car(name, year) {

this.name = name

this.year = year

this.start = start_engine

}

Now, calling

new Car("Ford", "1985")

creates a new object with the properties name and year, and a start method.

Built-in Methods

The only object built-in method is:

Script Built-in Method

Syntax

Effect

object.toString( )

Returns the string "[object Object]". This method can be overridden by assigning the toString property of an object.