legorar
v0.0.3
Published
Legorar Class and Events
Downloads
16
Readme
Legorar
Class
Read it in Chinese at Legorar.Class
create
Class.create([parent], [properties])
create a new class:
/* pig.js */
var Class = require('legorar').Class;
var Pig = Class.create({
initialize: function(name) {
this.name = name;
},
talk: function() {
console.log('I am' + this.name);
}
});
module.exports = Pig;
extend
Every class created by Class.create
has an extend
method:
/* red-pig.js */
var Pig = require('./pig');
var RedPig = Pig.extend({
initialize: function(name) {
RedPig.superclass.initialize.call(this, name);
},
color: 'red'
});
module.exports = RedPig;
implement
You can also mixin other classes:
/* flyable.js */
exports.fly = function() {
console.log('I am flying');
};
/* flyable-red-pig.js */
var RedPig = require('./red-pig');
var Flyable = require('./flyable');
var FlyableRedPig = RedPig.extend({
Implements: Flyable,
initialize: function(name) {
FlyableRedPig.superclass.initialize.call(this, name);
}
});
module.exports = FlyableRedPig;
The other way of mixin:
/* flyable-red-pig-extension.js */
var FlyableRedPig = require('./flyable-red-pig');
FlyableRedPig.implement({
swim: function() {
console.log('I can swim');
}
});
Class
Transfrom a function to class:
function Animal() {
}
Animal.prototype.talk = function() {};
var Dog = Class(Animal).extend({
swim: function() {}
});
Events
Read it in Chinese at legorar.Events
How to
There are two ways of implementing events:
var Events = require('legorar').Events;
var object = new Events();
object.on('expand', function() {
console.log('expanded');
});
object.trigger('expand');
The other way:
var Events = require('legorar').Events;
function Dog() {
}
Events.mixTo(Dog);
Dog.prototype.sleep = function() {
this.trigger('sleep');
};
var dog = new Dog();
dog.on('sleep', function() {
console.log('the dog is sleeping');
});
dog.sleep();
on
object.on(event, callback, [context])
You can pass a context to change the this.
post.on('saved', callback, that);
There is an all
event:
proxy.on('all', function(eventName) {
object.trigger(eventName);
});
off
object.off([event], [callback], [context])
// remove the onChange callback of change event
object.off('change', onChange);
// remove all callbacks of change event
object.off('change');
// remove all onChange callbacks of every event
object.off(null, onChange);
// remove all events for the context
object.off(null, null, context);
// remove all events of the object
object.off();
trigger
object.trigger(event, [*args])
var obj = new Events();
obj.on('x y', fn);
// equals:
obj.on('x').on('y');