思路:
在deepClone函数中,判断进入的值是数组、对象还是基本值,再使用for循环和for in循环进行克隆。
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var tina = {
name: '缇娜',
title:'黑槛日奈',
age: 34,
sex: '女',
'devil-nut': '槛槛果实',
'official-position': '海军少将',
friend: ['斯摩格', '赞高', '薇薇'],
teacher: '泽法',
sayHello: function () {
console.log(tina.name+'是被称为“'+tina.title+'”的性感美女,'+tina['devil-nut']+'能力者');
}
}
// 深克隆
function deepClone(o){
// 判断进入的o是不是数组
if (Array.isArray(o)) {
var result=[];
for (var i=0;i<o.length;i++) {
result.push(deepClone(o[i]));
}
// 判断进入的o是不是对象
}else if (typeof o=='object') {
var result={};
for (var k in o) {
result[k]=deepClone(o[k]);
}
// 判断进入的o是不是基本值
}else{
var result=o;
}
return result;
}
var obj1=deepClone(tina);
console.log(obj1);
</script>
</body>
</html>