- JScript code
// 以下代码目的: 使得类aa获得类bb的所有功能,即拥有 .aa .bb .bbfn() function aa() {//类 aa this.aa = 'aaa'; } function bb() {//类 bb this.bb = 'bbb'; } bb.prototype.bbfn = function() { alert('bb'); }; function forEachObj(o, fn) { for (var i in o) { fn(o[i], i); } } function apply(o1, o2) { forEachObj(o2, function (value, i) { o1[i] = value; }); } function mixin(class1, class2) { apply(class1.prototype, class2.prototype); } mixin(aa, bb); var x = new aa(); console.info(x);
但构造函数没有被复制到aa里,所以试了下修改构造函数,但是不成功:
- JScript code
function mixin(class1, class2) { apply(class1.prototype, class2.prototype); class1.prototype.constructor = function() { //把构造函数改成任意函数,但没有弹出alert alert('new'); }; }
请问构造函数如何修改?
------解决方案--------------------
x.bbfn();
x.constructor();试了下可以弹出
------解决方案--------------------
- JScript code
function mixin(class1, class2) { //apply(class1.prototype, class2.prototype); class1.prototype = new class2(); class1.prototype.constructor = class1; }