直接用js自帶的clone(boolean); 就可以了。
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供花都網(wǎng)站建設(shè)、花都做網(wǎng)站、花都網(wǎng)站設(shè)計、花都網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、花都企業(yè)網(wǎng)站模板建站服務(wù),十多年花都做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
可以直接克隆一個元素對象。但不克隆對象方法。
括號里,如果寫true,就代表深度克隆,將克隆元素對象的子節(jié)點。默認(rèn)為false;
最簡單的就是for循環(huán)了:參考網(wǎng)頁-網(wǎng)頁鏈接
for循環(huán)是非常好用的。如果不知道高級方法,通過for循環(huán)能夠完成我們大多數(shù)的需求。
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
如上,通過對數(shù)組的for循環(huán),即可實現(xiàn)對數(shù)組的深拷貝了。
淺拷貝:只復(fù)制對象的引用,此時對對象內(nèi)容的修改直接作用于原對象內(nèi)容。
深拷貝(深度克隆):復(fù)制對象的內(nèi)容,此時對對象內(nèi)容的修改是獨立的,不會影響到之前的對象。
所以這是編程時的選擇問題,如果你想擁有當(dāng)前對象內(nèi)容的復(fù)制,從而獨立地對它進(jìn)行操作,就用深度克隆
這題的意思是把一個對象中的內(nèi)容一級一級的復(fù)制到另外一個對象中。用for(var i in obj)的方式就可以了。
至于類型,js雖然是弱類型,但其實是有類型的,如數(shù)字類型,就是Number,對象類型就是Object,String,Date,Array,Boolean,Function等,然要判斷對象的類型也很簡單,如:
var?a?=?2;
a.constructor?==?Number;//?判斷是否為數(shù)值
a.constructor?==?String;//?判斷是否為字符串?a?=?"test"
a.constructor?==?Date;//?判斷是否為日期?a?=?new?Date()
a.constructor?==?Array;//?判斷是否為數(shù)組?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
//數(shù)組的克隆
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);?
【代碼來源網(wǎng)絡(luò)】
這種是很簡單的克隆。