直接用js自带的clone(boolean); 就可以了。
创新互联建站专业为企业提供花都网站建设、花都做网站、花都网站设计、花都网站制作等企业网站建设、网页设计与制作、花都企业网站模板建站服务,十多年花都做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
可以直接克隆一个元素对象。但不克隆对象方法。
括号里,如果写true,就代表深度克隆,将克隆元素对象的子节点。默认为false;
最简单的就是for循环了:参考网页-网页链接
for循环是非常好用的。如果不知道高级方法,通过for循环能够完成我们大多数的需求。
var arr = [1,2,3,4,5]var arr2 = copyArr(arr)function copyArr(arr) {
let res = [] for (let i = 0; i arr.length; i++) {
res.push(arr[i])
} return res
}123456789
如上,通过对数组的for循环,即可实现对数组的深拷贝了。
浅拷贝:只复制对象的引用,此时对对象内容的修改直接作用于原对象内容。
深拷贝(深度克隆):复制对象的内容,此时对对象内容的修改是独立的,不会影响到之前的对象。
所以这是编程时的选择问题,如果你想拥有当前对象内容的复制,从而独立地对它进行操作,就用深度克隆
这题的意思是把一个对象中的内容一级一级的复制到另外一个对象中。用for(var i in obj)的方式就可以了。
至于类型,js虽然是弱类型,但其实是有类型的,如数字类型,就是Number,对象类型就是Object,String,Date,Array,Boolean,Function等,然要判断对象的类型也很简单,如:
var a = 2;
a.constructor == Number;// 判断是否为数值
a.constructor == String;// 判断是否为字符串 a = "test"
a.constructor == Date;// 判断是否为日期 a = new Date()
a.constructor == Array;// 判断是否为数组 a = [1,"2",true]
a.constructor == Boolean;// 判断是否为布尔型 a = true
a.constructor == Object;// 判断是否为对象 a = {}
a.constructor == Function;// 判断是否为方法类型 a = function(){}
!DOCTYPE html
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
title
RunJS 演示代码
/title
style
.content{
background-color:black;
width:50px;
height:50px;
border-radius:90px;
line-height:50px;
color:white;
text-align:center;
cursor:pointer;
float:left;
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
}
/style
script
onload=function(){
document.body.onclick=function(e){
e = e || window.event;
var ta = e.target || e.srcElement || e.toElement;
if(ta.id == "c"){
this.appendChild(ta.cloneNode(true));
}
}
}
/script
/head
body
div class='content' id="c"
点我
/div
/body
/html
//数组的克隆
var obj = [1,2,[3,4,5]];
var objCloned = JSON.parse(JSON.stringify(obj));
console.log(obj);
console.log(JSON.stringify(obj));
console.log(objCloned);
【代码来源网络】
这种是很简单的克隆。