有这样一道面试题,不知道我答对了没 本帖最后由 u013769319 于 2014-02-25 09:48:36 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我很想知道的是,要求中是这样:方法clone,用于深度复制Car对象那么clone方法是不是应该作为静态方法添加给Car,而不是原型方法(公有方法)?有时间请指教,谢谢~ 这话啥意思方法cloneCount,用于获取clone的次数,使用clone方法复制得到的对象的cloneCount应被重置为0。 就是说这个对象被深刻复制后,返回的新对象的cloneCount属性的值应该为0.但是这个对象应该是Car的实例呢?还是Car本身?who能帮我解开疑惑?谢谢! 总觉的,这个问题有点传地址,传值的意思。使用clone方法复制得到的对象的cloneCount应被重置为0在什么情况下cloneCount会变化?? 这cloneCount有什么用? Car.prototype.clone = function(){ return new Car(this.pertol);} 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); 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);肯定会在这个类增加引用类型的成员变量的时候出现错误。所有它的实例都会共享这个引用类型的成员变量。 带有半透明毛边的个性化弹出窗? 求助图片效果达人指点 框架间的javascript调用--“拒绝访问”!!!! 求组合算法 求一正则 ----关于select的问题---- 如何清空IFRAME中的HTML代吗? 绝对兑现!!! 怎样做点击一个连接,提交表单? js循环取出xml某个子节点的值 jsp出现问题 有谁知道,phonegap,中文网主页,那个轮转效果怎么做出来的?
方法clone,用于深度复制Car对象
那么clone方法是不是应该作为静态方法添加给Car,而不是原型方法(公有方法)?
有时间请指教,谢谢~
方法cloneCount,用于获取clone的次数,使用clone方法复制得到的对象的cloneCount应被重置为0。
但是这个对象应该是Car的实例呢?还是Car本身?who能帮我解开疑惑?谢谢!
在什么情况下cloneCount会变化?? 这cloneCount有什么用?
return new Car(this.pertol);
}
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);
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);肯定会在这个类增加引用类型的成员变量的时候出现错误。所有它的实例都会共享这个引用类型的成员变量。