Skip to content

Instantly share code, notes, and snippets.

Created Mar 29, 2016
What would you like to do?
Method to setup inheritance
function extend(base, sub) {
// Avoid instantiating the base class just to setup inheritance
// See
// for a polyfill
// Also, do a recursive merge of two prototypes, so we don't overwrite
// the existing prototype, but still maintain the inheritance chain
// Thanks to @ccnokes
var origProto = sub.prototype;
sub.prototype = Object.create(base.prototype);
for (var key in origProto) {
sub.prototype[key] = origProto[key];
// Remember the constructor property was set wrong, let's fix it
sub.prototype.constructor = sub;
// In ECMAScript5+ (all modern browsers), you can make the constructor property
// non-enumerable if you define it like this instead
Object.defineProperty(sub.prototype, 'constructor', {
enumerable: false,
value: sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment