码迷,mamicode.com
首页 > 其他好文 > 详细

深度拷贝

时间:2018-12-13 14:24:07      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:===   key   undefined   title   func   OLE   get   []   round   

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <title>对象的深度克隆</title>
 6 </head>
 7 <body>
 8 <script type="text/javascript">
 9   // 深度克隆(复制)
10 
11   function getObjClass(obj) {
12     let result = Object.prototype.toString.call(obj).slice(8, -1);
13     if(result === Null){
14       return Null;
15     }else if(result === Undefined){
16       return Undefined;
17     }else {
18       return result;
19     }
20   }
21 
22   // 深度克隆
23   function deepClone(obj) {
24     let result, objClass = getObjClass(obj);
25     if(objClass === Object){
26       result = {};
27     }else if(objClass === Array){
28       result = [];
29     }else {
30       return obj; // 如果是其他数据类型不复制,直接将数据返回
31     }
32     // 遍历目标对象
33     for(let key in obj){
34       let value = obj[key];
35       if(getObjClass(value) === "Object" || Array){
36         result[key] = deepClone(value);
37       }else {
38         result[key] = obj[key];
39       }
40     }
41     return result;
42   }
43   
44   
45   let obj3 = {username: kobe,age: 39, sex: {option1: , option2: }};
46   let obj4 = deepClone(obj3);
47   console.log(obj4);
48   obj4.sex.option1 = 不男不女; // 修改复制后的对象不会影响原对象
49   console.log(obj4, obj3);
50 
51 
52 </script> 
53 </body>
54 </html>

 

深度拷贝

标签:===   key   undefined   title   func   OLE   get   []   round   

原文地址:https://www.cnblogs.com/noreason/p/10113614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!