coffe1891 / frontend-hard-mode-interview

《前端内参》,有关于JavaScript、编程范式、设计模式、软件开发的艺术等大前端范畴内的知识分享,旨在帮助前端工程师们夯实技术基础以通过一线互联网企业技术面试。
https://coffe1891.gitbook.io/frontend-hard-mode-interview/
Other
3.35k stars 323 forks source link

深拷贝那里有点问题 #21

Open hua03 opened 3 years ago

hua03 commented 3 years ago

深拷贝那里,不能直接将result赋值为空对象,这样会破坏对象的原型链,而且修改了对象。 可以改成这样:

result = new obj.constructor()

利用原对象的构造函数生成新对象,然后用for in 循环给对象添加属性。不过这种方式也存在弊端,如果构造函数需要接收参数做计算,就会导致执行时报错。