Это не пример передачи по ссылке (вы не передаете никаких параметров).Тем не менее, вы правы;Присвоение объекта не сделает глубокую копию.
Вы можете сделать глубокую копию объекта следующим образом:
function deepCopy(obj) {
if (typeof obj !== "object") return obj;
if (obj.constructor === RegExp) return obj;
var retVal = new obj.constructor();
for (var key in obj) {
if (!obj.hasOwnProperty(key)) continue;
retVal[key] = deepCopy(obj[key]);
}
return retVal;
}
Обратите внимание, что если конструктор объекта имеет какие-либо побочные эффекты, этокод вызовет их.