JavaScript действует этот проход по ссылке по-разному (несколько).В основном все передается по значению в JavaScript.Если вы передаете объект функции и изменяете какое-то свойство в себе, и у вас есть доступ к этим измененным значениям вне этой функции, это заставляет нас догадываться, что он передается по ссылке, но на самом деле для объектов значение переменной равноссылка .
Вы не можете достичь этого с помощью JavaScript, но есть простые обходные пути, которым вы можете следовать.Если вы знаете, что каждый объект в JavaScript является разновидностью пары «Словарь значения ключа», и все переменные могут быть доступны индексаторам.
В вашем случае, как я уже сказал, значение переменной является ссылкой, а еебессмысленно менять значение там, где оно не сохранится.И вы также знаете, что ваш текущий контекст (this
) - это global
, поэтому вы можете получить доступ к своей переменной через индексатор и изменить значение по имени.
Единственное отличие состоит в том, чтоВы передаете имя функции в виде строки.
var carToy, trainToy;
function setToyValue(name, description, toy) {
this[toy] = new makeToy(name, description);
}
function makeToy(name, description) {
this.name = name;
this.description = description;
}
function start() {
setToyValue("toy car", "red, 4 wheels", "carToy");
setToyValue("train car", "green, with 5 wagons", "trainToy");
console.log(carToy);
console.log(trainToy);
}
start();
Это лучшее, что вы можете сделать, по моему мнению.