2021-03-14 11:09:02 +01:00

59 lines
1.5 KiB
JavaScript

module.exports = function() {
var Class = function () {
var extend = function (subclass, superclass, overrides) {
var magic = function(fn) {
return function() {
var tmp = this.parent;
this.parent = superclass.prototype;
var res = fn.apply(this, arguments);
this.parent = tmp;
return res;
};
};
var k,
TempClass = function () {};
TempClass.prototype = superclass.prototype;
subclass.prototype = new TempClass();
for (k in overrides) {
subclass.prototype[k] = magic(overrides[k]);
}
return superclass.prototype;
};
var Class = function () {
var superclass, methods;
if (arguments.length === 1) {
methods = arguments[0];
} else {
superclass = arguments[0];
methods = arguments[1];
}
var cls = function () {
this._init.apply(this, arguments);
}
if (superclass) {
extend(cls, superclass, methods);
} else {
if (methods._init == null) {
methods._init = function() {};
}
cls.prototype = methods;
}
return cls;
};
return Class;
}();
return Class;
}();