请用JavaScript编写一个Car类,包含:一个属性pertrol,表示车辆目前剩余的汽油方法run,每调用一次,汽车的pertrol含量就会减一方法clone,用于深度复制Car对象方法cloneCount,用于获取clone的次数,使用clone方法复制得到的对象的cloneCount应被重置为0。请考虑Car类可能会被继承的情况下的最优方案
function Car(l){
this.pertrol= l || 200;
this.cloneNum = 0;
}
Car.prototype = {
constructor : Car,
clone:function(){
this.cloneNum++;
function sub(){
}
sub.prototype = this.constructor.prototype;
var clone = new sub();
for(var i in this){
if(this.hasOwnProperty(i)){
clone[i]=this[i];
}
}
clone.cloneNum=0;
return clone;
},
cloneCount:function(){
return this.cloneNum;
},
run:function(){
}
}
var carA = new Car();
var c1 = carA.clone(); //c1 carA cloneNum=1, c1 cloneNum=0;
var c2 = carA.clone(); //c2 carA cloneNum=2, c2 cloneNum=0;
var cc1 = c1.clone(); //cc1 c1 cloneNum=1, cc1 cloneNum=0;
var cc1a = c1.clone();
var cc1b = c1.clone();
var $carA_cloneCount = carA.cloneCount();
var $c1_cloneCount = c1.cloneCount();
var $c2_cloneCount = c2.cloneCount();
var $cc1_cloneCount = cc1.cloneCount();
http://bbs.youkuaiyun.com/topics/390716167