javascript中的深拷贝和浅拷贝...
时间:2010-08-17 来源:YSK_bit
javascript中的浅拷贝和深拷贝同其他语言例如C++、java中的深浅拷贝都是类似的。浅拷贝,就是只复制了对象的引用,而并没有复制对象本身;深拷贝就是复制了整个对象,也就是又重新开辟了一块内存空间,该空间中存储的对象同被复制的对象是完全相同的。
自己写了一个javascript深拷贝的函数,由于写的比较仓促,如果有不合适的地方,还请大家指正。
function clone(subject){ //6种类型object、 string、boolean、undefined、function、number //个人认为只有object需要进行特殊处理,其它类型进行简单赋值应该就可以 if(typeof subject != 'object'){ return subject; } //数组需要进行特殊处理 if(Object.prototype.toString.call(subject) === '[object Array]'){ var array = []; for(var i = 0; i < subject.length; i++){ if(typeof subject[i] === 'object'){ array[i] = clone(subject[i]); }else{ array[i] = subject[i]; } } return array; } //处理是object类型的情况 var copy = {}; for(var name in subject){ copy[name] = clone(subject[name]); } return copy; } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/YSK_bit/archive/2010/08/18/5820594.aspx