数据类型:(包括Number、String、Object、Array、Boolean、Null);
主要思路typeof判断基本数据类型,然后对判定同属object的null、Array和object进行单独复制(遍历数组和对象并调用自身clone克隆内部成员)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34function clone(obj){
var o;
switch(typeof obj){
case "undefined":
break;
case "string":
o=obj+"";
break;
case "number":
o=obj-0;
break;
case "object"://object具体 分两种情况 对象(Object)或数组(Array)
if(obj===null){
o=null;
}else{
if(Object.prototype.toString.call(obj).slice(8,-1)==="Array"){
o=[];
for(var i=0;i<obj.length;i++){
o.push(clone(obj[i]));//调用自身克隆数组对象内部成员
}
}else{
o={};
for(var k in obj){
o[k]=clone(obj[k]);//调用自身克隆对象内部成员
}
}
}
break;
default;
o=obj;
break;
}
return o;
}
实现一个函数clone,可以对JavaScript中的5种主要数据类型进行值复制
坚持原创技术分享,您的支持将鼓励我继续创作!