Do you know inheritance in JavaScript? Do you truly understand how it works? Are you aware that JavaScript uses a prototypal inheritance scheme that is often disfavored or disliked? Have you used a script on the web to adapt this scheme to classical inheritance?

In these past few days, I’ve been writing a jQuery slider plugin with various transition effects. To make the code succinct, I decided to use a base Transition object that other objects, which define a specific type of transition, inherit from. This led me to the question of JavaScript inheritance.

Inheritance in JavaScript has been a controversial subject. Should a standard be set to use classical inheritance or should the base prototypal system be favored? Both paths have their own advantages and disadvantages. The readings listed below will hopefully give you enough information to choose which method you want to use.

1. Private Members in JavaScript

This reading isn’t really about inheritance, but it’s an important primer on object-oriented programming in JavaScript which will help give you a deeper understand of what is to come.

2. Simple JavaScript Inheritance

John Resig, the creator of the jQuery JavaScript library, presents his own take on inheritance. Using his utility, it’s possible to change JavaScript into more of a classical inheritance scheme.

3. JavaScript Inheritance via Prototypes and Closures

Steffen Rusitschka explains the advantages and disadvantages of prototype-based and closure-based (more classical) inheritance. He also presents his own derivative of Resig’s script.

4. Classical Inheritance in JavaScript

This reading, by Douglas Crockford, a well-known JavaScript developer, is yet another way to achieve the classical inheritance scheme in JavaScript. In addition to presenting his extension, Crockford also explains the added functionality that JavaScript can provide.

5. Prototypal Inheritance in JavaScript

In this reading, Crockford analyzes his old classical inheritance and realizes the benefits of sticking with the prototypal structure. This last article expresses the flip side of the controversy, explaining why there is no need for a classical inheritance scheme.

Hopefully, these links have shed light on the debate between prototypal inheritance and classical inheritance. Although I used Resig’s script in my slider plugin, I recently came across Crockford’s prototypal inheritance article (#5) and am now rethinking my ways for future projects.

So, what’s your take on JavaScript inheritance? Leave a comment below. I would be glad to hear more arguments for either side!

Leave a Reply

5 Must-Reads on JavaScript Inheritance