function extend() {
var len = arguments.length, target, i = 0, options, prop;
if (len > 0) {
if (len == 1) {
target = {};
}
else {
target = arguments[0];
++i;
}
for (; i < len; ++i) {
options = arguments[i];
for (prop in options) {
target[prop] = (typeof options[prop] == 'object') ? extend(options[prop]) : options[prop];
}
}
return target;
}
}
var a = {i1: '1', i2: {i21: '21', i22: '22'}};
var b = extend(a); // считай клонируем
a.i2.i22 = 'ЙУХ';
window.status = b.i2.i22;
Во так нормалек