Simple ways to extend prototypes

  • uptown

Downloads in past


001.1.06 years ago9 years agoMinified + gzip package size for uptown in KB


Build Status
Simplify prototypical inheritance. This tries to provide some simple constructs for providing functionality you get with ES6 classes, such as:
  • Constructor functions
  • Static class methods
  • Getter and setter methods


Using npm:
npm install uptown --save

Using cdn:
<script src="https://unpkg.com/uptown/dist/uptown.min.js"></script>

  • dist/uptown.js contains uptown and requires lodash to be loaded separately. Can be used with requirejs.
  • dist/uptown.min.js contains minified uptown and dependencies (lodash).


Use extendify to add the extend method to a class (note: it mutates the original class).
The extend class method takes three options arguments:
  1. Object of instance properties
  2. Object of static methods and properties
  3. Object of getter and setter mutators

var extendify = require('uptown').extendify;

var Original = function() {};

Original.prototype.hello = function(value) {
  return 'Hello, ' + value;


var SubClass = Original.extend({
  // Specify a constructor for the new class
  constructor: function() {
    // Call parent constructor
    Original.apply(this, arguments);

  hello: function(value) {
    // Add exclamation point
    return Original.prototype.hello.call(this, value + '!')
}, {
  // Specify static methods and properties
  staticMethod: function() {}
}, {
  // Specify getters and setters for the new class
  foo: {
    get: function() {},
    set: function() {}

New classes may also be created using the createClass function. The createClass function works just like .extend.
var createClass = require('uptown').createClass;

var Foo = createClass({
  constructor: function() {
    this.foo = 'bar';