简单来说就是通过递归调用自身来完成对对象的完整复制。
然而对于有属性的函数依旧无解,期待找到解决办法。
除此之外,测试了一下并没有发现什么问题,应该能用。
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!"); } } } }
时间: 2024-10-10 04:40:28