Javascript: 深浅克隆;

一、深度克隆:javascript

Object.prototype.num = 1;
        var person1 = {
            name: '丽丽',
            age: 28,
            weight: 55,
            height: 168,
            sex: 'female',
            children:{
                first:{
                    name: '佳佳',
                    age: 9,
                    grade: '4年级'
                },
                second:{
                    name: '小刚',
                    age: 7,
                    grade: '三年级'
                },
                third:{
                    name: '小红',
                    age: 6,
                    grade: '二年级'
                }
            },
            arr: []
        }
        var person2 = {};

        deepClone(person1,person2);
        person2.name = '潇潇';
        person2.arr = ['benz','red'];
        person2.children.forth = {
            name: '晓丽',
            age: 5,
            grade: '一年级'

        }
        console.log(person1,person2);

        function deepClone(origin,target){
            var target = target || {};
            var toStr = Object.prototype.toString;
            var arrType = '[object Array]';

            for(var key in origin){
                if(origin.hasOwnProperty(key)){
                    if(typeof(origin[key]) === 'object' && origin[key]!== null){
                        if(toString.call(origin[key]) === arrType){
                            target[key] = [];
                        }else{
                            target[key] = {};
                        }
                        deepClone(origin[key],target[key]);
                    }else{
                        target[key] = origin[key];
                    }
                }
            }
            return target;
        }

能够对内部引用进行克隆,不会继承原型上的东西java

相关文章
相关标签/搜索