最近在研究js对象的深拷贝,下面是我试验的两种方法,一种是通过JSON.stringify和JSON.parse的方法实现的深拷贝,一种是通过递归函数实现的深拷贝。此处有个问题,第二种方法实现了对象方法的拷贝,但是不是深拷贝,网上找了很久都没有找到实现对象的方法深拷贝的方法,希望有大神能给点建议。let obj = { a: 1, b: ‘2’, c: { c1: 1 }, d: function () { console.log(’d’); }, e: [1, 2, 3]};//使用JSON.parse和JSON.stringify的方法是深拷贝,除了function,其他的都能拷贝let obj_copy1 = JSON.parse(JSON.stringify(obj));console.log(obj_copy1);console.log(obj.c === obj_copy1.c); //结果是false,对象是深拷贝// 使用递归的方法复制,function可以复制,除了function是浅拷贝,其他的都是深拷贝function clone(obj) { let new_obj = {}; for(let key in obj) { let t = ( typeof obj[key] ).toLowerCase(); if (t === ‘object’) { if(obj[key] instanceof Array) { var new_arr = []; for(let item of obj[key]) { new_arr.push(item); } new_obj[key] = new_arr; } else { new_obj[key] = clone(obj[key]); } } else { new_obj[key] = obj[key]; } } return new_obj;}let obj_copy2 = clone(obj);console.log(obj_copy2);console.log(obj.c === obj_copy2.c); //结果是false,对象是深拷贝console.log(obj.d === obj_copy2.d); //结果是true,function不是深拷贝