Вход

Просмотр полной версии : Изменение объекта по ссылке.


_SR_71_
28.08.2013, 19:02
Есть функция-конструктор и функция, проверяющая правильность параметров вновь создаваемого объекта с помощью функции-конструктора. В глобальной области видимости есть экземпляр, который попадает в проверяющую функцию по ссылке, где он изменяется с помощью функции-конструктора. Проблема в том, что вне функции параметры объекта не изменяются. Выглядит всё это примерно так:
var obj={e: 4};

function construct(e) {
this.e=e;
}

function new_obj(o) {
if(...)
o=new construct(5);
}

new_obj(obj);
Параметр е не изменился.
В чем проблема?
Как сделать, чтобы экземпляр изменялся в проверяющей функции с помощью конструктора, а не просто изменять его свойства.

zOdmin
28.08.2013, 19:54
Переменная o - это не сам объект, а ссылка на него.
Когда ты делаешь o=new... в этот момент создается новый объект и ссылка на него присваивается переменной o.
Дальше думай сам, как исправить, тут несколько путей.