mixin目的:为了使类aa有
1 .aa 属性
2 .aafn()方法
3 .bb 属性
4 .bbfn()方法
5 并且每个aa实例的变量不会冲突
以下代码能做到 1,2,3,4, 但是第5条不行,最后输出结果说明了:所有实例的bb变量都指向同一个,改一个其他都改了,期望的效果是不会冲突,请问如何写这个mixin方法function aa() {//类 aa
this.aa = 'aaa';
}
aa.prototype.aafn = function() {
alert('aa');
};
function bb() {//类 bb
this.bb = [];
}
bb.prototype.bbfn = function() {
alert('bb');
};function mixin(cls1, cls2) {
var prot1 = cls1.prototype; aa.prototype = new cls2();
apply(cls1.prototype, prot1);
}mixin(aa, bb);var a1 = new aa();
var a2 = new aa();
a1.bb.push(1);console.info(a2.bb);
1 .aa 属性
2 .aafn()方法
3 .bb 属性
4 .bbfn()方法
5 并且每个aa实例的变量不会冲突
以下代码能做到 1,2,3,4, 但是第5条不行,最后输出结果说明了:所有实例的bb变量都指向同一个,改一个其他都改了,期望的效果是不会冲突,请问如何写这个mixin方法function aa() {//类 aa
this.aa = 'aaa';
}
aa.prototype.aafn = function() {
alert('aa');
};
function bb() {//类 bb
this.bb = [];
}
bb.prototype.bbfn = function() {
alert('bb');
};function mixin(cls1, cls2) {
var prot1 = cls1.prototype; aa.prototype = new cls2();
apply(cls1.prototype, prot1);
}mixin(aa, bb);var a1 = new aa();
var a2 = new aa();
a1.bb.push(1);console.info(a2.bb);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货