浅谈Javascript 中几种克隆(clone)方式
2012-09-09 10:17
337 查看
一:在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=[3,2,1,0]; alert(m);//输出3,2,1,0;这个值改变了,因为m只是aArr的一个引用,如果aArr的值改变了,那么m也会相应的改变。
如果我们想克隆一个数组,最简单的办法:
var aArr = [0,1,2,3]; var m = aArr.slice(0); aArr = [3,2,1,0]; alert(m);//输出0,1,2,3,这时虽然aArr中的值已经改变,但是因为使用slice方法已经创建一个新的数组。
我们可以创建一个函数来克隆所有对象:
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; }
三:节点克隆:
var p = document.getElementsByTagName("p")[0]; var cP = p.cloneNode();//克隆p节点 var cP = p.cloneNode(true);//克隆p节点,深度克隆,克隆节点以及节点下面的子内容。
相关文章推荐
- 浅谈Javascript 中几种克隆(clone)方式
- 浅谈Javascript 中几种克隆(clone)方式
- 浅谈Javascript 中几种克隆(clone)方式
- 浅谈Javascript事件处理程序的几种方式
- 浅谈Javascript事件处理程序的几种方式
- 浅谈Javascript事件处理程序的几种方式
- 浅谈 Javascript 事件处理程序的几种方式
- javascript中创建对象的几种方式
- JavaScript中的几种继承方式
- 浅谈iOS开发中方法延迟执行的几种方式(转载)
- 浅谈java 中构建可执行 jar 包的几种方式
- JavaScript中对象的定义和继承的几种方式
- Javascript实现页面跳转的几种方式分享
- 关于JavaScript定义类和对象的几种方式
- JavaScript创建对象的几种方式
- javascript对象的几种方式
- JavaScript中绑定事件的几种方式
- 在javaScript中检测数据类型的几种方式
- JavaScript_几种继承方式(2017-07-04)
- Vue指令v-for之遍历输出JavaScript数组,json对象的几种方式