Inheritance through Prototypes: How to Extend Instances - | WebReference

Inheritance through Prototypes: How to Extend Instances -

Extending Instance Objects with Methods

JavaScript lets you extend not only classes of objects, but also instances of a class. When you extend instances of a certain class, all other instances are unaffected and are not extended. This capability allows you to differentiate between instances of the same class, and practically you end up with two types of instances that inherit the properties of the main class.

Let's take an example. Suppose we want to extend some instances of the String class with a method that picks every second character of the original string and returns them in a new string. Here is the function definition:

function string_pickEven() {
   var s = "";
   for (var i = 0; i < this.length; i+=2) s += this[i];
   return s;

This is how you extend the string foo with the pickEven method:

foo = new String("abcdefghijk");
foo.pickEven = string_pickEven;

Here is an example for using the extended foo string:

evenString = foo.pickEven();

The string evenString should be equal to "acegik".

Notice the difference between instance extension and class extension. Class extension is done via the prototype property, as explained in the previous page. An instance object is extended without the prototype property, as explained above.

Produced by Yehuda Shiran and Tomer Shiran

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