美文网首页
js深拷贝(深复制)函数(支持全部数据类型)

js深拷贝(深复制)函数(支持全部数据类型)

作者: Bior | 来源:发表于2019-10-17 17:45 被阅读0次
    function DeepClone (data) {
        if (data === null || typeof data !== 'object') return data;
        var newObj = data instanceof Array ? [] : {};
        for (var key in data) newObj[key] = DeepClone(data[key]);
        return newObj;
    }
    
    var obj = {
        id: 1,
        name: 'xxx',
        sayName: function (a) {
            console.log('my name is ' + a);
        },
        childs: [
            {'a': 1}, 
            {'c': 'd'}, 
        ],
        opts: {
            xxx: [1,2,'3'],
            aa: 'bb'
        },
    };
    var newObj = DeepClone(obj);
    console.log(obj)
    console.log(newObj)
    obj.sayName('bior')
    newObj.sayName('帅哥')
    

    注意: 此方法有点问题... 忘记考虑到特殊对象(formdata 和 date 等),还是得多判断一步,太懒了,看一下我的另外一篇文章吧:
    https://www.jianshu.com/p/a1b76b4e24a8

    相关文章

      网友评论

          本文标题:js深拷贝(深复制)函数(支持全部数据类型)

          本文链接:https://www.haomeiwen.com/subject/mblasctx.html