lib/proto.js
/*!
* Includes proto-js by Axel Rauschmayer
* https://github.com/rauschma/proto-js
*/
if (!Object.getOwnPropertyDescriptors) {
Object.getOwnPropertyDescriptors = function (obj) {
var descs = {};
Object.getOwnPropertyNames(obj).forEach(function (propName) {
descs[propName] = Object.getOwnPropertyDescriptor(obj, propName);
});
return descs;
};
}
var Proto = {
new: function () {
var instance = Object.create(this);
if (instance.constructor) {
instance.constructor.apply(instance, arguments);
}
return instance;
},
extend: function (subProps) {
var subProto = Object.create(this, Object.getOwnPropertyDescriptors(subProps));
subProto.super = this;
return subProto;
}
};
Function.prototype.extend = function (subProps) {
var constrFunc = this;
var tmpClass = Proto.extend.call(constrFunc.prototype, Proto);
return tmpClass.extend(subProps);
};