修正后的Mixin
function inMixin(){
var ths=this,i=0;
if (ths==window){
ths=arguments[0];i=1;
}
if(ths==null) throw "this is undefined";
if(i==arguments.length){
ths.mixin=inMixin;
return ths;
}
for (;i<arguments.length ;i++){
for (var a in arguments[i]){
ths[a]=arguments[i][a];
}
}
return ths;
}
需要说明的是Mixin模式是完全不同于prototype的,甚至是天生排斥原型定义方法的,我很难说清楚我为什么要这样干.
还是那句话:测试,探讨
===============下面是最初的文章==========================
首先,我自己都不知道自己想要什么结果,测试了之后才知道有没有价值.
var jMixin = function(){
if (arguments.length>2) return;
var ths=this;
var callee=arguments.callee;
var caller=arguments.callee.caller;
if (arguments.length==0) {
ths.jMixin=callee;
return;
}
if (arguments.length==1){
var args=arguments[0];
if (caller!==null) ths = caller;
}else{
ths=arguments[0];
var args=arguments[1];
}
if (ths==window || ths==undefined) ths={};
if (arguments.length==1 && caller==null)
ths.jMixin=callee;
for(var prop in args) ths[prop]=args[prop];
return ths;
}
var o=jMixin();
jMixin(o,{c:2});
var oo=jMixin({o:1});
jMixin(oo,{c:2});
var o2=jMixin(o);
var foo={};
jMixin(foo,{c:2});
var foonewnone=new jMixin();
var foonew=new jMixin(o);
var foonew2=new foonew.jMixin({c:5});

被折叠的 条评论
为什么被折叠?



