"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var mix_1 = require("./mix"); var is_function_1 = require("./is-function"); var extend = function (subclass, superclass, overrides, staticOverrides) { // 如果只提供父类构造函数,则自动生成子类构造函数 if (!is_function_1.default(superclass)) { overrides = superclass; superclass = subclass; subclass = function () { }; } var create = Object.create ? function (proto, c) { return Object.create(proto, { constructor: { value: c } }); } : function (proto, c) { function Tmp() { } Tmp.prototype = proto; var o = new Tmp(); o.constructor = c; return o; }; var superObj = create(superclass.prototype, subclass); // new superclass(),//实例化父类作为子类的prototype subclass.prototype = mix_1.default(superObj, subclass.prototype); // 指定子类的prototype subclass.superclass = create(superclass.prototype, superclass); mix_1.default(superObj, overrides); mix_1.default(subclass, staticOverrides); return subclass; }; exports.default = extend; //# sourceMappingURL=extend.js.map