function deepCopy(o) { if (o instanceof Array) { var n = []; for (var i = 0; i < o.length; ++i) { n[i] = deepCopy(o[i]); } return n; } else if (o instanceof Function) { var n = new Function("return " + o.toString())(); return n } else if (o instanceof Object) { var n = {} for (var i in o) { n[i] = deepCopy(o[i]); } return n; } else { return o; } }
可以拷贝数组、对象、方法,缺点:不能复制不可枚举属性,如constructor,prototype等