Tutorial Objects

Introduction

http://www.w3schools.com/js/js_obj_intro.asp

Create Your Own Objects

There are different ways to create a new object:

Create a direct instance of an object

The following code creates an instance of an object and adds four properties to it:

personObj=new Object()
personObj.firstname="John"
personObj.lastname="Doe"
personObj.age=50
personObj.eyecolor="blue"

Adding a method to the personObj is also simple. The following code adds a method called eat() to the personObj:

personObj.eat=eat

Create a template of an object

The template defines the structure of an object. (You can also add some methods to the person object. This is also done inside the template):

function person(firstname, lastname, age, eyecolor)
{
    this.firstname = firstname
    this.lastname = lastname
    this.age = age
    this.eyecolor = eyecolor

    this.newlastname = newlastname
}

Notice that the template is just a function. Inside the function assign things to this.propertyName.

Note that methods are just functions attached to objects. We will have to write the newlastname() function:

function newlastname(new_lastname)
{
    this.lastname = new_lastname
}

Once you have the template, you can create new instances of the object, like this:

myFather=new person("John","Doe",50,"blue")
myMother=new person("Sally","Rally",48,"green")

myMother.newlastname("Doe")

prototype

http://www.javascriptkit.com/javatutors/proto.shtml

The prototype object of JavaScript, introduced starting in JavaScript 1.1, is a prebuilt object that simplifies the process of adding custom properties/methods to all instances of an object.

The prototype object is here to help when you wish to quickly add a custom property to an object that is reflected on all instances of it. To use this object, simply reference the keyword prototype on the object before adding the custom property to it, and this property is instantly attached to all instances of the object.

A demonstration is worth a thousand words, so I’ll show one right now: Let’s define the custom property “pi” in the above in a way so it’s a default property of all instances of circle():

//First, create the custom object "circle"
function circle(){
}
circle.prototype.pi=3.14159

The prototype object can also help you quickly add a custom method to an object that is reflected on all instances of it.

//First, create the custom object "circle"
function circle(){
}

circle.prototype.pi=3.14159

// create the object method
function alertmessage(){
    alert(this.pi)
}

circle.prototype.alertpi=alertmessage

undefined

From http://weblogs.asp.net/bleroy/archive/2005/02/15/373815.aspx:

Something that has not been assigned to is not null, it’s undefined. Undefined is different from null.

Well, anyways, you can use typeof to explicitly check for undefined, or use other more or less clean tricks, but the best way to deal with that is probably to just rely on the type-sloppiness of JavaScript and count on it to evaluate null and undefined as false in a boolean expression, like this:

if (SomeObject) {