Agregar Propiedades a un Objeto JavaScript

Seguimos empilados con la serie de métodos comunes y muy utiles en JavaScript, ahora explicaremos en detalle y veremos un ejemplo sobre el uso del método defineProperty, el cual nos servirá para agregar o modificar propiedades en nuestros objetos JavaScript. Básicamente este método nos permite la adición o modificación de una propiedad en un objeto ; retornando el objeto con sus modificaciones.
Su sintaxis es:
Object.defineProperty(obj,propiedad,descriptor);
Parámetros:
obj: Objeto al cual se le va a definir la propiedad.
propiedad: El nombre de la propiedad a ser definida o modificada
descriptor: Es un objeto que describe/representa las nuevas propiedades del objeto actual.
Problema:
Dado un objeto que tiene la propiedad ‘nombre’ y ‘apellido’ crear una función que retorne una nueva propiedad llamada ‘nombreCompleto’ cuyo valor sera una cadena (unión de las propiedades ‘nombre’ y ‘apellido’ , separadas por un espacio).
Solucion:
//Definimos el objeto 'persona'
var persona:{
nombre:'blarz',
apellido:'Hernandez'
}
//Creamos la función
function agregarPropiedadNombreCompleto(obj){
return Object.defineProperty(obj,'nombreCompleto',{value:obj.nombre +' '+ obj.apellido});
}
//Llamada a la funcion
var objeto = agregarPropiedadNombreCompleto(persona);
//Salida
/*Object{
nombre:'blarz',
apellido:'Hernandez',
nombreCompleto:'blarz Hernandez'
}*/
Explicación
La función recibe como parámetro un objeto (‘obj’) cuyas propiedades iniciales son ‘nombre’ y ‘apellido’. Al método ‘definedProperty’ le pasamos como primer parámetro el objeto (‘persona’) , el segundo parámetro sera la propiedad solicitada (‘nombreCompleto’) y por ultimo le pasamos un objeto con la propiedad ‘value’ cuyo valor estará compuesto por los datos que vengan de las dos propiedades (‘nombre’ y ‘apellido’) presentes en el objeto inicial.
Ahora si hacemos la llamada a la función y le pasamos el objeto (‘persona’) ya no solo tendrá las propiedad ‘nombre’ y ‘apellido’ sino una tercera llamada ‘nombreCompleto’.
Desafió
Dado dos objetos (obj1 y obj2 ) y una clave (clave), crea una función que agregue una nueva propiedad en el primer objeto (obj1) con la clave dada.
function agregarPropiedadAObjeto(obj1,clave,obj2){
//Tu codigo aqui.
}
Como siempre GRACIAS por leer y seguir mi blog. No olviden dejar su solución en los comentarios y sus aportes.