简单来说就是通过递归调用自身来完成对对象的完整复制。
然而对于有属性的函数依旧无解,期待找到解决办法。
除此之外,测试了一下并没有发现什么问题,应该能用。
function copy(objIn,objOut){ for(var prop in objIn){ switch (typeof objIn[prop]){ case "number":objOut[prop]=objIn[prop]; break; case "string":objOut[prop]=objIn[prop]; break; case "object":{ var temp=(objIn[prop].constructor==Array)?[]:{}; copy(objIn[prop],temp); objOut[prop]=temp; break; } case "function":{ //如果函数定义了属性,那么这一段代码并没有实现真正的复制。 objOut[prop]=objIn[prop]; break; } default:{ throw new Error("type error!"); } } } }
本文探讨了一种使用递归调用的方法来实现对象的深度复制,但指出此方法在处理带有属性的函数时存在局限。作者分享了一个能够完成基本数据类型和复杂对象复制的深拷贝函数,并邀请读者共同寻找更完善的解决方案。
158

被折叠的 条评论
为什么被折叠?



