uptown
v1.1.0
Published
Simple ways to extend prototypes
Downloads
4,254
Maintainers
Readme
Uptown
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:
- Object of instance properties
- Object of static methods and properties
- 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';
}
});