实现简易版深拷贝
function clone(obj, c = {}) { var c = c, test = Object.prototype.toString; for (var k in obj) { if (test.call(obj[k]) === '[object Object]' || test.call(obj[k]) === '[object Array]') { c[k] = test.call(obj[k]) === '[object Object]' ? {} : []; clone(obj[k], c[k]) }else{ c[k] = obj[k]; } } return c }
更简单的方法使用ES6的Object.create,Object.create原理是把创建一个新对象,把新对象的原型指向传入的对象 ,所以使用object.create复制的对象是在原型链上的。