function clone(origin, target){
var target = target || {}
for(var prop in origin){
target[prop] = origin[prop]
}
return target
}
var obj = { a: 1, b: 2 }
var obj1 = {}
clone(obj1, obj)
- 深拷贝
- 判断是否是原始值,原始值直接拷贝
- 判断是否是对象还是数组
- 建立相等的数组或者对象
function deepClone(origin, target) {
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]"
for(var prop in origin) {
if( origin.hasOwnProtoperty(prop) ){
if( origin[prop] !== 'null' && typeof (origin[prop]) == 'Object'){
if( toStr.call(origin[prop]) === arrStr ){
target[prop] = []
} else {
target[prop] = {}
}
deepClone(origin[prop], target[prop])
} else {
target[prop] = origin[prop]
}
}
}
return target
}