一、深度克隆: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