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.