var a={a:"aaa"}
var b=a
b.a="sss"
alert(a.a)//改变了 弹出sssvar aa={a:"aaaa"}
var b=function(){}
b.prototype=aa
var bb=new b
bb.a="sss"
alert(aa.a)//未改变 弹出aaaa var aa={a:["aaaa"]}//<---变成数组
var b=function(){}
b.prototype=aa
var bb=new b
bb.a[0]="sss"
alert(aa.a)//改变了 弹出sss

解决方案 »

  1.   

    自己借鉴mootools 写的一个unlink函数
    var a={a:["aaaa"]}function $unlink(x){
    var unlinked;
    if(typeof x=='object'){
    if(x instanceof Array){
    unlinked=[];
    for(var i=0;i<x.length;i++)
    unlinked[i] = $unlink(x[i])
    }else{
    unlinked={}
    for (var i in x) {
    unlinked[i] = $unlink(x[i])
    }
    }
    }else{
    return x
    }
    return unlinked;
    }
    var b=$unlink(a)
    //b=a  //如果把前面的注释去掉 将弹出sss
    b.a[0]="sss"
    alert(a.a)
      

  2.   

    在mootools里发现了 这种式子 不知道作者要干什么?大家看看
    var a={a:"aaa"}
    var b=function(){}
    b.prototype=a
    var bb=new b
    a=bb
      

  3.   

    比如这样 
    var a = function(){
        var F = function(){};
        F.prototype = this;
        var i = new F;
        return i
    }
      

  4.   

    使a拥有a()也就是b这个方法类实例?