1.1.0 • Published 6 years ago

uptown v1.1.0

Weekly downloads
2,596
License
MIT
Repository
github
Last release
6 years ago

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';
  }
});
1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.4.1

8 years ago

0.4.0

9 years ago

0.3.0

9 years ago

0.2.0

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago