兼容值类型的JavaScript对象Clone方法javascript

对象的克隆是oop中常用的一个方法,可是javascript的对象(各种数据类型都是)却没有提供一个clone方法。上次我实现了一个clone方法,可是一直有个小毛病,就是遇到"值类型"就晕菜了。你或许会觉得值类型也clone,搞笑吧?可是javascript动态类型语言,其实你在调用时可能更本不知道它是什么类型,能克隆"值类型"将会使代码具有很好的兼容性。

当然由于我们可以使用typeof方法获取对象的基本类型,然后一个switch,该干嘛干嘛不就搞定了吗?这个... 我希望我的clone能不去判断每种具体的类型,而尽量使用javascript语言提供的机制来完成,这也是上次那个clone方法不能clone值类型的原因。

昨天麻袋同学给出了一个很棒的解决值类型clone问题的方法,使用代码:

objclone = new this.constructor(this.valueof());

代替我原来的:

objclone = new this.constructor();

这样一来值类型clone的问题迎刃而解,原理(麻袋解释的):

对于 date, boolean, number 这三种基本的数据类型,执行

var objclone = new this.constructor();

的时候,得到的是默认值。而真实的值又没有属性可引用到,所以,只能在初始化的时候,以参数形式赋默认值。

var objclone = new this.constructor(this.valueof());

不过后来麻袋发现它的代码处理object的时候有问题,于是给出了:


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值