Classical Inheritance is Obsolete – How to Think in Prototypal OO

That’s right. I said it. To a packed room at the O’Reilly Fluent Conference: JavaScript and Beyond, 2013. And I’ll say it again: Classical inheritance is obsolete. Classes are dead. They just don’t know it, yet. 😉

Check out the corresponding blog post, “Fluent JavaScript – Three Different Kinds Of Prototypal OO”.

See also:


JavaScript is The Most Important Programming Language on Earth

In case you haven’t heard, JavaScript is The Most Important Programming Language on Earth. Once thought of as a toy, JavaScript is now the most widely deployed language in the history of deployed languages. By this, I mean that almost everyone with a computer or a smartphone has all the tools they need to execute JavaScript programs, and create their own. All you need is a browser and a text editor.

Almost every computing platform in common use has a browser. So JavaScript programs run virtually everywhere. Creating a JavaScript program is as simple as editing a text file and opening it in the browser. That’s it. It has the lowest barrier to entry around. No complex development environments to download and install. No complex IDE to learn.

That low barrier to entry is probably the main reason that JavaScript is (still) considered by many to be a toy. After all, there are a lot of newbies, and even experienced programmers who think they know JavaScript writing a lot of crappy code. But anybody who thinks JavaScript is a toy in this day and age has not been paying attention to the amazing platforms and tools being created with JavaScript.

Everything from full blown cloud-based office suites (see to even more impressive social integrations, like Facebook’s JavaScript SDK.

JavaScript happens to be one of the most advanced programming languages developed to date. Here are some of the features you may or may not be familiar with:


Just in Time compiling – In modern browsers, most JavaScript is compiled, highly optimized and executed, so run-time performance is close to software written directly in C or C++.

Object Oriented

JavaScript uses a prototypal object system. Instead of classes, we have object prototypes – making it one of the least verbose, most expressive, most flexible, and most powerful object-oriented languages on the planet. Evidence: It’s possible to mimic Java’s class-based OO and inheritance models in JavaScript virtually feature-for-feature, and in most cases, with less code. The reverse is not true.

Contrary to common belief, JavaScript supports features like encapsulation, polymorphism, multiple inheritance, composition, etc… Most of these features don’t have explicitly defined ways to do these things, but a lot of class-based ideas can be implemented in better ways using other JavaScript features, such as lambda and modules.


JavaScript’s Object Literal syntax is so simple, flexible, and concise, it was adapted to become the dominant standard for client/server communication in the form of JSON. JSON is more compact than the XML that it replaced, and more flexible, as well.

First Class Functions

In JavaScript, objects were not a tacked-on afterthought. Everything in JavaScript is an object, including functions. Because of that feature, functions can be used anywhere you might use a variable, including the parameter strings in function calls. That feature is often used to define anonymous callback functions for asynchronous operations…</p


Inside the browser, everything runs in a single event loop. JavaScript coders quickly learn to think in terms of event handlers, and as a result, code from experienced JavaScript developers tends to be well organized, and very efficient. JavaScript developers tend to be performance oriented, because we have years of experience writing user-interfaces for the least-patient audience on earth: you.

If you click something, you want something to happen instantly. Your impatience has led to wonderful advancements in UI design, such as Google Instant, and the amazing address lookup on The Wilderness Downtown. Such functionality is powered by asynchronous AJAX calls that do their thing in the background without blocking the UI function in the browser.


Well written JavaScript code, by virtue of its ubiquity, is the most portable, reusable code around. What other language let’s you write the same form validation code that runs both on the client, and on the server? (See Node.JS for an event-driven JavaScript environment that is revolutionizing server-side development.)

JavaScript can be modular and encapsulated, and it is common to see scripts written by six different teams of developers who have never communicated working in harmony on the same page.

I am a JavaScript architect, fully embedded in what may be the single biggest revolution in the history of computing: the dawn of the realtime web. Messages passing back and forth across the net, in some cases with each keystroke, or every move of the mouse. No more waiting for a page refresh. We’re writing applications that put desktop application UI’s to shame. Modern JavaScript applications are the most responsive, most socially engaging applications ever written — and if you don’t know JavaScript yet, you’re missing the boat. Time to get on board, before you get left behind.

Welcome to the JavaScript Revolution