class.js
v0.0.1
Published
A simple and efficient class inheritance implementation based on John Resig's code.
Downloads
8
Readme
class.js
Simple and efficient class inheritance based on John Resig's code ("Simple JavaScript Inheritance" and "Simple Class Instantiation").
Written for being used with node.js.
Installation
npm install class.js
Example
var Class = require('class.js');
// Create a class.
var A = Class({
// Contructor's code should be put into init().
init: function(x) {
this.x = x;
},
f: function() {
this.x += 2;
}
});
// Instantiate.
var a = new A(7); // init(7) is called.
// This way is valid too, in case you accidentally forgot to write "new":
var a2 = A(7);
// Also, you have the magic "_parent()" method which allows you
// to call a method of the same name from the parent class.
// Let's create a child class.
var B = A.extend({
init: function(x) {
// Call the parent constructor:
this._parent(x / 2);
},
f: function() {
// Call the f() from "A":
this._parent();
// Do something specific to "B" here...
this.x += 3;
},
g: function(a, b) {
// Some code here...
}
});
// The keyword "instanceof" works.
var X = Class({ /* ... */ });
var Y = X.extend({ /* ... */ });
var b = new B(11);
var x = new X();
var y = new Y();
a instanceof A; // true
b instanceof B; // true
b instanceof A; // true
x instanceof X; // true
y instanceof Y; // true
y instanceof X; // true
a instanceof B; // false
x instanceof Y; // false
x instanceof A; // false
b instanceof Y; // false
// If you have the urge to call an arbitrary parent's method
// from a child class, the way to do it (as of now) is the following:
var C = B.extend({
init: function() { /* ... */ }
x: function() {
A.prototype.f.call(this);
}
});
Useful JsDoc for your IDE
/** @class */
var A = Class(/** @lends A */ {
/** @constructor */
init: function() { /* ... */ }
f: function() { /* ... */ }
});
/**
* @class
* @extends A
*/
var B = A.extend(/** @lends B */ {
/** @constructor */
init: function() { /* ... */ }
g: function() { /* ... */ }
});
About
- Copyright 2012, Ivan Zhidkov.
- Released under the MIT License.
- Based on Simple JavaScript Inheritance and Simple Class Instantiation by John Resig (MIT Licensed).