深拷贝

作者: webj | 来源:发表于2018-09-05 16:39 被阅读0次

    1.数组,函数可共用

    //判别函数类型
    function typeOf(obj) {
        const toString = Object.prototype.toString;
        const map = {
            '[object Boolean]'  : 'boolean',
            '[object Number]'   : 'number',
            '[object String]'   : 'string',
            '[object Function]' : 'function',
            '[object Array]'    : 'array',
            '[object Date]'     : 'date',
            '[object RegExp]'   : 'regExp',
            '[object Undefined]': 'undefined',
            '[object Null]'     : 'null',
            '[object Object]'   : 'object'
        };
        return map[toString.call(obj)];
    }
    
    // deepCopy
    function deepCopy(data) {
        const t = typeOf(data);
        let o;
    
        if (t === 'array') {
            o = [];
        } else if ( t === 'object') {
            o = {};
        } else {
            return data;
        }
    
        if (t === 'array') {
            for (let i = 0; i < data.length; i++) {
                o.push(deepCopy(data[i]));//回调函数遍历数组
            }
        } else if ( t === 'object') {
            for (let i in data) {
                o[i] = deepCopy(data[i]);//回调函数遍历函数
            }
        }
        return o;
    }
    
    export {deepCopy};
    

    2.数组简单方法

    function arrayDeepCopy(arr){
      return JSON.parse(JSON.stringify(arr));
    }
    

    相关文章

      网友评论

          本文标题:深拷贝

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