Prueba esto:
var clone = (function(){
return function (obj) { Clone.prototype=obj; return new Clone() };
function Clone(){}
}());
Esto es lo que está pasando.
- Clone es un constructor ficticio.
- Asignamos el objeto que queremos clonar al prototipo del constructor Clon.
- Llamamos clonar usando 'nuevo', por lo que el objeto construido tiene el objeto original como prototipo del constructor aka (no estándar)
__proto__
.
El objeto clonado compartirá todas las propiedades del objeto original sin realizar copias de nada. Si a las propiedades del objeto clonado se les asignan nuevos valores, no interferirán con el objeto original. Y no se requiere alteración de integradas.
Tenga en cuenta que una propiedad de objeto del objeto recién creado se referirá al mismo objeto que la propiedad del mismo nombre del objeto clonado. La asignación de un nuevo valor a una propiedad del clon no interferirá con el original, pero la asignación de valores a las propiedades del objeto del clon sí lo hará.
probar este en cromo o firebug consola:
var user = {
name: "Foo",
email: "[email protected]"
}
var clonedUser = clone(user);
console.dir(clonedUser);
Una explicación detallada de esta técnica de clonación se puede encontrar here.
Objeto JavaScript! = Objeto JSON. El ejemplo que proporcionó es un literal de objeto de JavaScript; Actualicé tu publicación en consecuencia. –
¡buena pregunta! Siempre pienso que usuario2 = usuario hará una copia, pero no lo haga. – Topera
La 'respuesta' más corta: sí y sí. ;) –