读书人

怎么 mixin

发布时间: 2012-03-28 15:40:03 作者: rapoo

如何 mixin

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;} 

读书人网 >JavaScript

热点推荐