Переменные / объекты передаются по значению, и почему я не могу изменить свойство объекта с помощью переменной в JavaScript? [Дубликат]

На этот вопрос уже есть ответ здесь:

Является ли JavaScript языком передачи по ссылке или передачей по значению? 29 ответов

Предположим, у меня есть объект как:

var obj = {
        len: 4,
        bred: 5
    }

Теперь предположим, что я назначил этот объект переменнойx какvar x = obj;, Насколько я понимаю, он создает копиюobj и назначить эту копиюx- то есть передать по значению. Теперь, если я изменю свойствоx затем он также изменяет это свойство объекта obj. Например.

x.len = 99

Тогда обаobj.len а такжеx.len становиться99, С другой стороны рассмотрим этот сценарий:

var r = 2, s = 3, t = 4; 
s = r;
s = 88;

Сейчасr передается по значениюs тотs копияr был данs, Так меняетсяs в88 не меняет первоначальное значениеr переменная. Typingr в консоли все еще выдает2.

Вопрос 1: Если переменные (включая объекты) передаются по значению в JavaScript, тогда почему происходит изменениеx.len изменить оригиналobj.len, тоже?

Другая проблема заключается в том, что я не могу изменить свойство объекта при назначении переменной. Рассмотрим этот сценарий:

var obj2 = {
        len: 4,
        bred: 5
    }
var x2;
x2 = obj.len;

Сейчас набираюx2 в консоль просто возвращается4, Но если я попытаюсь изменить значениеx2 такие какx2 = 77; тогда это не изменитсяobj2.len.

Вопрос 2: Почему я не могу изменить свойство объекта с помощью переменной?

Ответы на вопрос(2)

Ваш ответ на вопрос