As variáveis / objetos são passados por valor e por que não posso alterar a propriedade do objeto com variável em javascript? [duplicado]

Esta pergunta já tem uma resposta aqui:

O JavaScript é uma linguagem de passagem por referência ou de passagem por valor? 29 respostas

Suponha que eu tenha um objeto como:

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

Agora, suponha que eu atribua esse objeto a uma variávelx Comovar x = obj;. Tanto quanto eu entendo, ele cria uma cópia doobj e atribua essa cópia ax- isso é passar por valor. Agora, se eu alterar uma propriedade dex depois, altera também essa propriedade do objeto obj. Por exemplo.

x.len = 99

Então ambosobj.len ex.len tornar-se99. Por outro lado, considere este cenário:

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

Agorar é passado por valor paras estes uma cópia der foi dado as. Então mudandos para88 não altera o valor original der variável. Digitandor no console ainda dá2.

Questão 1: Se variáveis (objetos incluídos) são passadas por valor em JavaScript, por que alterarx.len mude o originalobj.len, também?

Outro problema é que não posso alterar a propriedade de um objeto ao atribuir a uma variável. Considere este cenário:

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

Agora digitandox2 no console simplesmente retorna4. Mas se eu tentar mudar o valor dex2 tal comox2 = 77; então isso não mudaobj2.len.

Questão 2: Por que não consigo alterar a propriedade do objeto com uma variável?

questionAnswers(2)

yourAnswerToTheQuestion