本帖最后由 u013769319 于 2014-02-25 09:48:36 编辑

解决方案 »

  1.   

    我很想知道的是,要求中是这样:
    方法clone,用于深度复制Car对象
    那么clone方法是不是应该作为静态方法添加给Car,而不是原型方法(公有方法)?
    有时间请指教,谢谢~
      

  2.   

    这话啥意思
    方法cloneCount,用于获取clone的次数,使用clone方法复制得到的对象的cloneCount应被重置为0。
      

  3.   

    就是说这个对象被深刻复制后,返回的新对象的cloneCount属性的值应该为0.
    但是这个对象应该是Car的实例呢?还是Car本身?who能帮我解开疑惑?谢谢!
      

  4.   

    总觉的,这个问题有点传地址,传值的意思。使用clone方法复制得到的对象的cloneCount应被重置为0
    在什么情况下cloneCount会变化??   这cloneCount有什么用?
      

  5.   

    Car.prototype.clone = function(){
       return new Car(this.pertol);
    }
      

  6.   

    function Car(pertrol){
    this.pertrol=pertrol;
    arguments.callee.prototype.clonenum++;
    }
    Car.prototype={
    construtor:Car,
    run:function(){
    this.pertrol--;
    },
    cloneCount:function(){
    return this.clonenum;
    },
    clonenum:0
    }
    Car.clone=function(target,obj){
    $.extend(true,target,obj);
    target.clonenum=0;
    return target;
    }var $c1 = new Car(100);
    var $c2 = new Car(200);
    var $num = $c1.cloneCount();
    var supCar = {
    gao:'lihaideche'
    }
    Car.clone(supCar,$c1);
    var $s = supCar;
    var $c3 = new Car(300);
      

  7.   

    var car = function() {
        this.ipertrol = 100;
        this.cloneNum = 0;
    };car.prototype.run = function() {
        if(this.ipertrol != 0) {
            this.ipertrol--;
        }
    };car.prototype.clone = function() {
        var srcCar = this;
        srcCar.cloneNum++;    var cloneObj = function(srcObj) {
            if(typeof(srcObj) != 'object') return srcObj;
            if(srcObj == null) return srcObj;        var myNewObj = new Object();        for(var i in srcObj)
                myNewObj[i] = cloneObj(srcObj[i]);        return myNewObj;
        }    var newCar = cloneObj(srcCar);
        newCar.cloneNum = 0;
        return newCar;
    }克隆这个主要考引用吧。如果单纯用return new Car(this.pertol);肯定会在这个类增加引用类型的成员变量的时候出现错误。所有它的实例都会共享这个引用类型的成员变量。