1、两种方法实现深拷贝(深复制)
(1)方法一:兼容性好,请仔细看代码(网上大部分代码有Bug)
(2)方法二:需要对象满足JSON数据格式。JOSN数据格式:
2、代码
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>JavaScript实现深拷贝(深复制)</title> </head> <body> <script> var obj = { name: null, age: 10 } //方法一:兼容性好 function deepClone(obj) { var o = obj instanceof Array ? [] : {}; for(var k in obj) { //有bug(属性的值为null时) //o[k] = typeof obj[k] === 'object'?deepClone(obj[k]):obj[k]; if(typeof obj[k] === 'object' && obj[k] != undefined) { o[k] = deepClone(obj[k]); } else if(typeof obj[k] === 'object' && obj[k] == undefined) { o[k] = null; } else { o[k] = obj[k]; } } return o; } //方法二:只能处理符合JSON格式的对象 function deepClone2(obj) { return JSON.parse(JSON.stringify(obj)) } console.log(deepClone(obj)); console.log(deepClone2(obj)); </script> </body> </html>
如对本文有疑问, 点击进行留言回复!!
2016年信息安全工程师综合知识第11-15题解析【建群网培信息安全工程师】
网友评论