Definir propiedades de un objeto en JavaScript

ECMAScript 5 dispone de un par de APIs que nos permite afectar la forma como interactuamos con los objetos que creamos, permitiéndonos especificar getters y setters, evitar la enumeración de propiedades, eliminar propiedades, e incluso prevenir la extensión de objetos (adición/modificación de propiedades), es decir que podemos ejercer un mayor control sobre ellos.
Continue reading

Crear un objeto en JavaScript

Objetos en JavaScript

En JavaScript, un objeto sigue la notación “clave” : valor, similar a un Hash o Dictionary en otros lenguajes de programación. Para crear objetos en JavaScript, podemos hacerlo de diferentes maneras, ya sea a través de un Object Literal, mediante el método Object.create o por instanciación con el operador new.

Recordemos que JavaScript es un lenguaje basado en prototipos, lo cual quiere decir que todos los objetos que usemos se basan en un objeto pre-existente que le sirve de prototipo (o plantilla). ⭐ Vea más sobre éste tema en el artículo POO en JavaScript – Prototipos.
Continue reading

Clonando objetos en JavaScript

Valores primitivos y objetos

Cuando programamos, es usual invocar funciones y pasar argumentos, sin embargo es posible que no conozcamos el manejo que le da JavaScript a esos parámetros, motivo por el cual a veces obtenemos resultados inesperados.

💡 Primero que todo vamos a aclarar los términos argumetos y parámetros:

  • argumetos hace referencia a los valores que le enviamos a una función.
  • parámetros hace referencia a los valores que recibe la función y son especificados en la firma de la función.
    // a y b son los parámetros de suma
    function suma (a, b) {
        return a + b;
    }

    var x = 5;

    // x y 8 son los argumentos enviados a suma
    var r = suma(x, 8);

⭐ Al enviar argumentos con valor primitivo (string, number, boolean, null, undefined), el parámetro de la función que recibe el valor crea una copia by value.
Esto significa que cualquier cambio que hagamos sobre ese parámetro, sólo será válido dentro de la función y no afectará al argumento original. Veamos el siguiente ejemplo:

Continue reading