js深拷贝代码

function deepClone(data) {
        var t = type(data), o, i, ni;      
        if(t === 'array') {
            o = [];
        }else if( t === 'object') {
            o = {};
        }else {
            return data;
        }    
        if(t === 'array') {
            for (i = 0, ni = data.length; i < ni; i++) {
                o.push(deepClone(data[i]));
            }
            return o;
        }else if( t === 'object') {
            for( i in data) {
                o[i] = deepClone(data[i]);
            }
            return o;
        }
}

对于function类型,这里是直接赋值的,共享一个内存值。这是因为函数更多的是完成某些功能,有个输入值和返回值,而且对于上层业务而言更多的是完成业务功能,并不需要真正将函数深拷贝。


flyer_dev
413 声望45 粉丝

Front-End Developer