一:在Javascript里,如果克隆对象是基本类型,我们直接赋值就可以了:
var sStr = "kingwell"; var cStr = sStr; alert(cStr);//输出kingwell sStr = "abc"; alert(cStr);//输出kingwell;
把一个值赋给另一个变量时,当那个变量的值改变的时候,另一个值不会受到影响。
二:如果不是基本类型,那就有所有不同了:
var aArr = [0,1,2,3]; var m = aArrr; alert(m);//输出1,2,3 aArr=[1,1,2,3]; alert(m);//输出1,1,2,3;这个值改变了,因为m只是aArr的一个引用,如果aArr的值改变了,那么m也会相应的改变。
开发中,打断对象间的引用关系,只想下个副本的情况无处不在,clone一个对象就在所难免了。
JavaScript中,简单的方法就是用JSON函数,将对象stringify成字符串,再parse成一个新对象。要么就是从网上搜个代码,开源社区里面clone的代码还是有不少的。
举个栗子Clone函数:
function clone(obj) { var o; if (typeof obj == "object") { if (obj === null) { o = null; } else { if (obj instanceof Array) { o = []; for (var i = 0, len = obj.length; i < len; i++) { o.push(clone(obj[i])); } } else { o = {}; for (var j in obj) { o[j] = clone(obj[j]); } } } } else { o = obj; } return o; }代码虽然可以找得到,但,东西永远是别人的,动手学着码永远是个不变的主题。
来大家一起造轮子...