您的位置:首页 > 其它

有关对象克隆和使用了prototype后,for..in语句的问题

2007-07-24 15:36 567 查看
今天遇到个问题,开始还觉得很奇怪,后来才恍然大悟,原来是对象克隆里面浅拷贝和深拷贝的问题。看书的时候意思知道,可就是不能联想到能用在哪里?以致出现bug后才发觉玄机原来在这里。问题是这样出现的:

strTree["000601"]=strTree["000501"];
strTree["000601"].changeFlag=1;
结果发现strTree["000501"]和strTree["000601"]的changeFlag均变成了1,原因很直观,是由两个json对象引用的是同一个对象地址所致,当然可以采用重新申请对象和地址的初始化方式解决不同引用的问题,然后对属性逐一赋值,如:

function exchangeJson(divObj,id1,id2)
// Authors Birdshome, 麻袋@博客园
Object.prototype.Clone = function()
for(element in strTree)
var obj = new this.jsonTree.constructor();
for(flag in this.jsonTree)
{
if(obj[flag]!=this.jsonTree[flag])

}
通用的问题也解决了,也不害怕prototype再有扩展了。搞定!

问题本身没什么,但反映出来的问题却不可小视,那就是自己对原理性的东西关注不够,解决问题的方式也就只是从网上搜,或者求助于别人了,当然不是说这样不好,但要创造,要开创性做一些东西的话,显然这样是不可能办到的,给自己提个醒吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐