UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

70 lines (69 loc) 1.76 kB
function derive(makeDefaultOpt, initialize, proto) { if (typeof initialize == "object") { proto = initialize; initialize = null; } var _super = this; var propList; if (!(makeDefaultOpt instanceof Function)) { propList = []; for (var propName in makeDefaultOpt) { if (makeDefaultOpt.hasOwnProperty(propName)) { propList.push(propName); } } } var sub = function(options) { _super.apply(this, arguments); if (makeDefaultOpt instanceof Function) { extend(this, makeDefaultOpt.call(this, options)); } else { extendWithPropList(this, makeDefaultOpt, propList); } if (this.constructor === sub) { var initializers = sub.__initializers__; for (var i = 0; i < initializers.length; i++) { initializers[i].apply(this, arguments); } } }; sub.__super__ = _super; if (!_super.__initializers__) { sub.__initializers__ = []; } else { sub.__initializers__ = _super.__initializers__.slice(); } if (initialize) { sub.__initializers__.push(initialize); } var Ctor = function() { }; Ctor.prototype = _super.prototype; sub.prototype = new Ctor(); sub.prototype.constructor = sub; extend(sub.prototype, proto); sub.extend = _super.extend; sub.derive = _super.extend; return sub; } function extend(target, source) { if (!source) { return; } for (var name in source) { if (source.hasOwnProperty(name)) { target[name] = source[name]; } } } function extendWithPropList(target, source, propList) { for (var i = 0; i < propList.length; i++) { var propName = propList[i]; target[propName] = source[propName]; } } var extendMixin = { extend: derive, derive }; export { extendMixin as default };