Ejemplo creación EMCMA6

De wikiserver
La revisió el 12:09, 18 oct 2017 per Jnoguera (Discussió | contribucions)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Dreceres ràpides: navegació, cerca
// Para crear una clase se usa la palabra reservada 'class'
            class Persona {
            /* El método 'constructor' se utiliza para inicializar los atributos
             * de la clase.
             *
             * Observar que se pueden especificar valores por defecto a los perámetros.
             *  - Se pasa el valor por defecto 'conocido' a 'tipoSaludo'.
             */
            
           
            
            constructor(nombre, edad, email, tipoSaludo = 'conocido')
            {
            // Para hacer referencia a las propiedades del objeto se utiliza la
            // palabra reservada 'this'.
            this._nombre = nombre;
            this._edad = edad;
            this._email = email;
            this._tipoSaludo = tipoSaludo;
            }

            // Se pueden crear los getter con la palabra reservada 'get'.
            // Los getter sirven para obtener los valores de las propiedades
            // del objeto.
            get nombre()
            {
            return this._nombre;
            }

            // Se pueden crear los setter con la palabra reservada 'set'.
            // Los setter sirven para asignar nuevos valores a las propiedades
            // del objeto.
            set tipoSaludo(tipoSaludo) {
            this._tipoSaludo = tipoSaludo;
            }
            
            
            // Para crear un método simplemente se define su nombre
            saludar(nombre)
            {
           
            if (this._tipoSaludo === 'conocido')
                    console.log(`Hola ${nombre}, ¿Cómo estas?`);
            else
                    console.log(`Hola, mi nombre es ${this._nombre}`);
            }

            /* En algunas ocaciones se puede dar el caso de que no podemos tener
             * acceso a nuestro objeto, la solución a este inconveniente se muestra
             * y explica en este método.
             */
            mostrarme()
            {
            // Declarando una variable local y asignándole una referencia al propio
            // objeto.
            let _this = this;
            // En una función anónima no se puede acceder al propio objeto usando
            // la palabra reservada 'this' (obtenemos como salida 'undefined').
            (function () {
            console.log(this);
            })();
            // Una solución es declarar una variable y asignarle una referencia
            // al objeto como se hace al inicio del método.
            (function () {
            console.log(_this);
            })();
            // Esta es la manera correcta y elegante de acceder a nuestro objeto.
            ((e) => {
            console.log(this);
            })();
            }

            // Los métodos estáticos se declaran usando la palabra reservada 'static'.
            static girar()
            {
            console.log('Girando!');
            }
            }
            // Para crear una instancia de la clase 'Persona' se usa la palabra reservada
            // 'new'. Recordar que el cuarto parámetro es opcional, por lo que al no pasarle
            // valor tomara por defecto el especificado en el método 'constructor' de la
// clase.
            var p = new Persona('Julio', 30, 'juliolamerce@gmail.com');
            // Llamando a uno de sus métodos.
            p.saludar('Ana');
// Cambiando el valor del atributo 'tipoSaludo' usando el setter tipoSaludo
            p.tipoSaludo = 'otro';
            p.saludar();
            // Obtenieno el valor del atributo 'nombre' usando el getter nombre
            console.log(p.nombre);
// Ejemplo del acceso al propio objeto y la mejor forma de hacerlo, en
            // circunstancias como: los eventos, funciones anónimas, uso de JQuery dentro
            // del método, etc.
            p.mostrarme();
            
            // Un método estático no necesita de una instacia de clase para ser invocado.
            Persona.girar();