Referencia
Los objetos nunca se copian. Se transmiten por referencia. Una referencia de objeto es un valor que hace referencia a un objeto. Cuando crea un objeto utilizando el operador new
o la sintaxis literal del objeto, JavaScript crea un objeto y le asigna una referencia.
A continuación se muestra un ejemplo de creación de un objeto utilizando la sintaxis literal del objeto:
var objeto = {
foo: 'bar'
};
Aquí hay un ejemplo de cómo crear un objeto usando el operador new
:
var objeto = new Object();
objeto.foo = 'bar';
Cuando asigna una referencia de objeto a una variable, la variable simplemente contiene una referencia al objeto, no al objeto en sí. Esto significa que si asigna la referencia del objeto a otra variable, ambas variables apuntarán al mismo objeto.
Por ejemplo:
var objeto1 = {
foo: 'bar'
};
var objeto2 = objeto1;
console.log(objeto1 === objeto2); // Salida: true
En el ejemplo anterior, tanto objeto1
como objeto2
son variables que contienen referencias al mismo objeto. El operador ===
se usa para comparar las referencias, no los objetos en sí, y devuelve true
porque ambas variables contienen referencias al mismo objeto.
Puede utilizar el método Object.assign()
para crear un nuevo objeto que sea una copia de un objeto existente.
A continuación se muestra un ejemplo de un objeto por referencia.
// Imagínate que comí una pizza
let miPizza = { trozos: 5 };
// Y lo compartí contigo
let tuPizza = miPizza;
// me como otra rebanada
miPizza.trozos = miPizza.trozos - 1;
let numeroDeTrozosRestantes = tuPizza.trozos;
// Ahora tenemos 4 porciones porque miPizza y tuPizza
// referencian al mismo objeto pizza.
let a = {},
b = {},
c = {};
// a, b y c se refieren cada uno a un
// objeto vacío diferente
a = b = c = {};
// a, b y c se refieren todos a
// el mismo objeto vacío