uptown

1.1.0 • Public • Published

Uptown

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

Install

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).

Usage

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;
}
 
extendify(Original);
 
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';
  }
});

Package Sidebar

Install

npm i uptown

Weekly Downloads

338

Version

1.1.0

License

MIT

Unpacked Size

240 kB

Total Files

6

Last publish

Collaborators

  • smizell