Livescript has a pretty sweet class system. Shame we can't use it in JS-land.
OR CAN WE.
const Base = require('estira');
var Foo = Base.extend({
initialize: function(bar) {
this.bar = bar;
},
frob: function(baz) {
return this.bar + baz;
}
});
var foo = new Foo("hello ");
foo.frob("world"); //⇒ "hello world"
Base class with the bare minimal needed for inheritance. Extend it, it doesn't do much on its own.
Returns a prototypal subclass of Superclass
, inheriting Superclass
's instance and class properties, extended with the object passed in. If methods
contains a method called initialize
, it is used as Subclass
's constructor. If initialize
is omitted, it delegates to the parent class' constructor.
Extends the "metaclass" of Class
. Lets you add static methods, which may be inherited.
Refers to the parent class implementation of the function. Lets you call super methods like
var Superclass = Base.extend({
quux: function() {
return "hello";
}
});
var Subclass = Superclass.extend(
quux: function quux() {
return quux.super$() + " world";
}
);
If you want to extend a class that doesn't derive from Base
(e.g. EventEmitter
), you can shoehorn estira onto it using Sub = Base.extend.call(EventEmitter, methods)
. Classes created this way can be further extended, and super$
calls still work.
MIT. © 2014 Matt Brennan.