浅拷贝
1. Object.create(Object.getPrototypeOf(prev), Object.getOwnPropertyDescriptors(prev)) (最完美)
2. Object.assign({}, prev) (无法拷贝enumerable=false的属性;无法拷贝原型链)
3. 使用for in遍历prev,对新对象进行赋值(无法拷贝enumerable=false的属性;可以遍历原型链,但原型链结构不再存在且自身和原型链相同的属性只会保留一个)
4. 使用Object.keys、values、entries遍历prev,对新对象进行赋值(无法拷贝enumerable=false的属性;无法拷贝原型链);
使用Object.getOwnPropertyNames遍历prev,对新对象进行赋值(可以拷贝enumerable=false的属性;无法拷贝原型链)
5. 借助工具库,如lodash、underscore、jquery等(_.clone...)
深拷贝
1. 递归逐层浅拷贝
2. JSON.parse(JSON.stringify(obj))