shallow copy
deep copy
from:object-oriented-javascript
function shallowCopy(p) {
var c = {};
for (var i in p) {
c[i] = p[i];
}
c.uber = p;
return c;
}
deep copy
function deepCopy(p, c) {
var c = c || {};
for (var i in p) {
if (typeof p[i] === 'object') {
//如果对象的构造函数是Array函数,就使用Array表示形式
//为什么要这么判断,原因是对象的constructor的值返回的是对象的构造函数,它是一个function,而Array也是一个函数,故这里比较的是引用
c[i] = (p[i].constructor === Array) ? [] : {};
deepCopy(p[i], c[i]);
} else {
c[i] = p[i];
}
}
return c;
}
from:object-oriented-javascript