¿Las variables / objetos se pasan por valor y por qué no puedo cambiar la propiedad del objeto con variable en javascript? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Es JavaScript un lenguaje de paso por referencia o de paso por valor? 29 respuestas

Supongamos que tengo un objeto como:

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

Ahora supongamos que asigno este objeto a una variablex comovar x = obj;. Por lo que yo entiendo, crea una copia deobj y asignar esa copia ax- eso es pasar por valor. Ahora si cambio una propiedad dex entonces cambia esa propiedad del objeto obj también. P.ej.

x.len = 99

Entonces ambosobj.len yx.len volverse99. Por otro lado, considere este escenario:

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

Ahorar se pasa por valor as eses una copia der fue dado as. Tan cambiantes a88 no cambia el valor original der variable. Mecanografíar en la consola todavía da2.

Pregunta 1: Si las variables (objetos incluidos) se pasan por valor en JavaScript, ¿por qué cambiarx.len cambiar el originalobj.len, ¿también?

Otro problema es que no puedo cambiar la propiedad de un objeto cuando lo asigno a una variable. Considere este escenario:

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

Ahora escribiendox2 en la consola simplemente regresa4. Pero si trato de cambiar el valor dex2 comox2 = 77; entonces eso no cambiaobj2.len.

Pregunta 2: ¿Por qué no puedo cambiar la propiedad del objeto con una variable?