Base library for OO style programming, supports both browser and node
Top Class is the Class
// var Class = require('oo')
require(['oo'], function(Class) {
// a base class
var Super = Class({
// constructor will be called on instantiation
constructor: function() {
},
// members that will be added to the prototype
say: function(content) {
console.log(content)
}
});
// inherits the Super
var Sub = Class(Super, {
constructor: function(prop) {
// $super method will call the Super Class's method with the same name,
// in this, is `constructor`
this.$super(arguments);
// other code
this.prop = prop;
},
say: function(content) {
this.$super(arguments);
console.log(this.prop)
}
});
var sup = new Super();
sup.say('hi');
var sub = new Sub('sub');
sub.say('fuck!');
});
This equals Object.create
method.
Class.static(obj);
if config a constructor, and it is a function, it will be called on instantiation
$super method will call the Super Class's method with the same name;
notice:
because $super
internal implementation uses the arguments.caller
, $super can not be used in strict mode!
this property references the instance's Class:
var Base = Class();
var instance = new Base();
instance.$self === Base // true
references the super class:
var Super = Class();
var Sub = Class(Super);
Sub.$superClass === Super // true
Class() equals Class.create()
creates a new object with the specified prototype object and properties.
Just equals Object.create
method.