1. 浅层克隆
function clone(target, origin) {
var target = target || {};
for (var prop in origin) {
target[prop] = origin[prop];
}
return target;
}
2. 深层克隆
// 1. 判断是不是原始值
// 2. 判断是数组还是对象
// 3. 建立响应的数组或对象
function deepClone(target, origin) {
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]";
for (var prop in origin) {
if (origin.hasOwnProperty(prop)) {
if (origin[prop] != null && typeof(origin[prop]) == "object") {
if (toStr.call(origin[prop]) == arrStr) {
target[prop] = [];
} else {
target[prop] = {};
}
deepClone(target[prop], origin[prop]);
} else {
target[prop] = origin[prop];
}
}
}
return target;
}