Объект передачи javascript в качестве ссылки
У меня есть объект, который передается во многих разных функциях внутри функции. эти функции могут или не могут изменить значение объекта, но если они меняют его, то я хотел бы получить последние изменения на объекте.
Следующее - то, что я пытаюсь сделать:
var ob = {text: 'this is me', name: 'john'}
function (object) {
changeObject(object);
customObjectChanger(object);
callback = function (object) {
object.text = 'new text';
}
callback(object);
// object value here should be object{text: 'new text', name: 'john'};
}
Ответы
Ответ 1
В JavaScript объекты всегда передаются копией. Я не уверен, будет ли точно указана правильная терминология, но будет передана копия ссылки на объект.
Это означает, что любые изменения, внесенные в объект, будут видны вам после выполнения функции.
код:
var obj = {
a: "hello"
};
function modify(o) {
o.a += " world";
}
modify(obj);
console.log(obj.a); //prints "hello world"
Ответ 2
"Объекты" не являются значениями в JavaScript и не могут быть "переданы".
Все значения, с которыми вы имеете дело, являются ссылками (указатели на объекты).
Передача или назначение ссылки дает другую ссылку, указывающую на тот же объект. Конечно, вы можете изменить один и тот же объект через эту другую ссылку.