Saltar al contenido

LDP | §1.8 - Objetos

§1.7 Decisión e iteración

Los objetos que presentamos en la introducción a JavaScript son construcciones creadas por el programador. Hemos visto que pueden contener una serie de datos de distinto tipo, llamados atributos o propiedades, cada una con un nombre o identificador. Recordemos uno de los ejemplos utilzados:

var persona1 = {
    nombre: "Juan",
    edad: 35,
    paisDeNacimiento: "Argentina",
    vacunado: true
};
console.log(persona1.nombre); // muestra "Juan"

Además de propiedades, los objetos pueden contener funciones propias llamadas métodos, los cuales tienen acceso a las propiedades del objeto en cuestión. Supongamos que necesite una función que devuelva un texto descriptivo de un objeto de este tipo, por ejemplo "Juan tiene 35 años, nació en Argentina y está vacunado". Podemos ampliar nuestro objeto con un método para ello, de esta forma:

var persona1 = {
    nombre: "Juan", 
    edad: 35, 
    paisDeNacimiento: "Argentina", 
    vacunado: true,
    descripcion: function () {
        var d;
        d = this.nombre + " tiene " + this.edad
            + ", nació en " + this.paisDeNacimiento;
        if (this.vacunado) {
            d = d + " y está vacunado";
        } else {
            d = d + " y no está vacunado";
        }
        return d;
    }
};

El nuevo atributo descripcion es en realidad un método que nos genera una descripción adecuada de la persona en la que se le aplica. Para ello, JavaScript tiene la palabra reservada this que sólo debe usarse dentro de un objeto, y que se refiere al propio objeto como un todo, lo que nos permite acceder a sus propiedades. A partir de este último ejemplo, el código siguiente

console.log(persona1.descripcion());

mostraría efectivamente en la consola

"Juan tiene 35 años, nació en Argentina y está vacunado"

En esta descripción, el uso de métodos no parece muy útil ya que, de querer definir una nueva var persona2 debería yo mismo volver a escribir la función descripcion. JavaScript ofrece algunos mecanismos para definir un tipo personalizado de objeto (con las propiedades y métodos que definamos) y después crear variables de ese tipo incluyendo desde su misma creación todas esas propiedades y métodos. Nosotros no crearemos objetos, sino que nos serviremos de los objetos ya creados que nos ofrece JavaScript.

En los objetos que veremos, interesará conocer qué propiedades y métodos exponen cada uno. Todos los tipos de datos simples (números, strings) pueden usarse en ciertos contextos como objetos con ciertas propiedades.

Strings como objetos

Veamos estos ejemplos:

var texto = "Mis caracteres";
// Propiedad length nos da la cantidad de caracteres
var longitud = texto.length; // 14
// Método para pasar el texto a minúsculas
var enMinusculas = texto.toLowerCase(); // "mis caracteres"
// Devuelve el caracter con índice 5 (el sexto)
var letra5 = texto.charAt(5); // "a"
// etc.

Una referencia completa para todos las propiedades y métodos de un string tratado como objeto pueden verse en String - Cadena de caracteres de la documentación de MDN mencionada en la bibliografía.

Arreglos como objetos

También los arreglos tienen una enorme variedad de métodos disponibles. Veamos algunos de ellos:

var frutas = ["manzana", "pera", "naranja", "ciruela", "melón"];
// Propiedad length nos da la cantidad de elementos del arreglo
var cantidadDeFrutas = frutas.length; // 5
// Método para buscar un elemento en un arreglo:
var posicion = frutas.indexOf("naranja"); /* 2 (la tercera posición, empezando desde 0) */
// Método para agregar un elemento a un arreglo:
frutas.push("frutilla"); /* Ahora el arreglo contiene un sexto elemento "frutilla" */
// etc.

La referencia análoga para arreglos se encuentra en la página Array de la documentación de MDN ya citada.

 

§1.8 Operadores y sentencias especiales >