То, что вы делаете сейчас заменяет локальную переменную object
со значением value
. Что вы могли бы сделать, вместо того, чтобы достичь этого:
function searchObject(object, property, value) {
object[property] = value;
}
var a = {
person: "Ian"
};
searchObject(a, 'person', "James");
document.write(a.person);
Тогда не будет заменить локальную переменную, но свойство объекта. Объект по-прежнему относится к одной и той же вещи, и в этом коде вы редактируете объект вместо локальной замены.
Это связано с тем, что в JavaScript каждый аргумент функции передается по значению, но поскольку объекты хранятся в виде указателей, а не как их значение, это означает, что вам предоставляется только адрес памяти объекта, если вы положили a
в ваш параметр функции. Если вы снова получите доступ к этой переменной внутри функции, она будет указателем на ту же самую вещь. Изменение свойств в нем затем изменит свойства в самом объекте.
Вы передаете функцию только как строку, а не объект или что-то в этом роде. Итак, как же так или иначе получить ссылку на родительский объект? – Sirko