一个js深拷贝的方法

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等

posted @ 2017-03-08 00:41  mordom  阅读(4322)  评论(0)    收藏  举报