Inheritance through Prototypes: Performance Boosting via Prototypes - | WebReference

Inheritance through Prototypes: Performance Boosting via Prototypes -

The Effect of Prototypes on JavaScript's Performance

The prototype property not only makes your life easier as a programmer, it also boosts your program's performance by accelerating the construction actions. Constructors are those functions that when called with the new keyword, create new objects and assign them properties. Here is the constructor function path:

function path() {
  this.slideBy = slideBy;
  this.moveTo = moveTo;

And here is how you call this constructor:

path_instance = new path();

We'll probably write a tutorial on the JavaScript language in one of our future columns. For now, let's revisit the terms object, class, instance, and methods. The object path above refers to a class of objects that belong to the same type and are constructed by the same path function (constructor). Each object generated by this function is an instance of the path class. Methods are those functions that operate on objects and are generated during the object construction. slideBy and moveTo are two methods of the path object.

Each time you create a new instance of an object with the new command (invoking the constructor), each and every object in the class has identical copies of the same method properties. All of these properties take up valuable memory space (even though you may only use one). Also, every time you want to create a new object and access a property created with the constructor, you need to reinvoke the constructor. Fortunately, JavaScript 1.1 introduced a solution to this problem: it allows an object to inherit properties from a prototype object.


In JavaScript 1.1 every object has a prototype property, which it inherits its properties from. This means that all of the properties of the prototype object appear to be properties of the objects that inherit them. Inheritance occurs automatically as part of the process of looking up a property value. Properties are not copied, they magically appear as properties of the objects. This has two benefits: (i) using the prototype property can drastically reduce the amount of memory required by an object, and (ii) objects can inherit prototype properties even after the object is created!

Produced by Yehuda Shiran and Tomer Shiran

Created: January 18, 1999
Revised: January 18, 1999