My project
  • e-books (current)
  • VSC
  • Comandos
    Terminal Git & Github
  • Frontend
    HTML5 CSS3 SASS Bootstrap 4 JS PUG JS Jquery TypeScript React Angular
  • Backend
    NODE JS Express JS PHP C Wordpress SQL
  • Tools
    NPM Webpack Babeljs Pug JS Pug JS
  • Temas varios
    Jobs International Events SEO UX/UI Marketing Design Business Cool Frontend Pages Canada

    Terminologías y definiciones

  • Polyfill es un código que provee funcionamiento de una caracteristica nueva de es6 a una vieja
  • Datos primitivos: Información que no son un objeto y que es inmutable, hay 6 tipos de datos primitivos en js:

      Primitivos

    1. Booleano: true or false
    2. Null: sin valor, si usas typeof, te dirá que es un objeto
    3. Undifined: existe la variable pero no se le ha asignado un valor
    4. Number: números enteros o decimales(integers or floats)
    5. String: Cadenas de caracteres(palabras etc)
    6. Simbols: un tipo de dato que no puede ser igual a ninguno, un un valor UNICO(se usan en objetos)
    • Operadores de comparación

    • No es igual (!=) Devuelve true si los operandos no son iguales.
    • tricta (!==) Devuelve true si los operandos son del mismo tipo pero no iguales, o son de diferente tipo.
    1. Lógica booleana

    2. false es false
    3. true es true
    4. !false es true
    5. !true es false
    6. !!true es true
    7. !!false es false
    8. También se puede negar una función, ejemplo

      let caja = () => {

      console.log("Regresa falso");

      return false;

      }

      console.log(!caja());

    9. && ó AND ambas deben de ser ciertas para que de TRUE
    10. true && true da true
    11. true && false da false
    12. OJO: si Javascript nota que el primer resultado dará false, ya no seguirá revisando más cosas, por eso primero pon el true, se usa mucho cuando quieres ejecutar funciones de manera condicional

      let box = () => {

      console.log("Regresa true");

      return true;

      }

      let caja = () => {

      console.log("Regresa falso");

      return false;

      }

      console.log(caja() && box());

    13. OR ó ||al menos una condición debe de ser verdad
    14. Ejercicio capcioso con AND y OR

      const soyUndifined = undefined;

      const soyNull = null;

      const soyFalso = false;

      const a1 = true && 'Hola mundo';

      //evalua primero que sea true y como si es true, pasa al segundo valor y lo imprime,osea se le asigna ese valor, EL UÚLTIMO VALOR

      const a2 = true && 'Hola mundo' && 150;

      //Se le asigna el último valor, que no sea negativo

      const a3 = true && 'hola mundo' && 150 && soyNull;

      const a4 = true && 'hola mundo' && 150 && soyUndifined;

      //Pero si hay un valor falso, lo imprime aunque no sea el último

      const a5 = true && 'hola mundo' && soyFalso && 150 && soyUndifined;

      //Pero si es con OR, buscará al menos un true o un valor sin detenerse en el primer valor aunque sea false, e imprimira el último valor

      const a6 = soyFalso || 'Ya no soy falso';

      //Imprime el último valor aunque sea un null o undifined

      const a7 = soyFalso || soyUndifined;

      const a8 = soyFalso || soyUndifined || soyNull;

      //Pero si encuentra un valor anterior al true, DISTINTO de null o undifined, pondrá ese valor

      const a9 = soyFalso || "texto" || true;

      console.log(a9);

  • Deestructuración: una expresión que permite asignar valores a nombres conforme a una estructura de tabla dada. Ejemplo:

    Deestructuración con un objeto RESUMIDO

    const persona = (nombre, apellido) =>

    ({ nombre, apellido })

    const { nombre: nombreNuevo } = persona('Ricardo', 'Garrido');

    console.log({ nombreNuevo });

    Se pueden reestructurar arrays y objetos, ambos pueden tener valores por defecto en ambos, solo que en el objeto, el valor por defecto se pone en la función

    Deestructuración con un objeto imprimiendo con una función

    let usuario = {

    nombre: 'Ric',

    apellido: 'gARRido',

    edad: 33,

    pais: 'mexaland'

    }

    let { nombre, apellido } = usuario;

    let imprimir = ({ nombre, profesion = 'developer' }) => {

    console.log(`Mi nombres es ${nombre} y soy ${profesion}`);

    }

    imprimir(usuario);

  • Parametros REST: Es una sintaxis, cuando lo pongo como argumento dentro de una función, ES UN PARAMETRO REST, y quiere decir "Une todos los argumentos en una sola variable y transformalo como un areglo"
  • Parametros Spread: Cuando utilizas los tres puntos fuera de una funcion(EN CUALQUIER LUGAR), es un parametro SPREAD y simboliza, "separa los elementos", la ventaja es que rompe la referencia de Javascript y así podemos trabajar con objetos y hacer igualaciones que apunten a diferentes espacios en memoria
    Ejemplo:

    Esto sobre escribe el valor en ambos objetos, esto es un problema

    let juan = { nombre: 'Juan' };

    let ana = juan;

    ana.nombre = 'Ana';

    console.log(juan, ana);

    Aquí lo resolvemos apuntando a otro espacio en memoria

    let juan = { nombre: 'Juan' };

    let ana = {...juan };

    ana.nombre = 'Ana';

    console.log(juan, ana);


    Ejemplo 2:

    Esto sobre escribe el valor en ambos objetos, esto es un problema

    const cambiarNombre = (persona) => {

    persona.nombre = 'Tony'

    return persona;

    }

    let peter = { nombre: 'Peter' };

    let tony = cambiarNombre(peter);

    console.log(peter, tony);

    Esto sobre escribe el valor en ambos objetos, esto es un problema

    const cambiarNombre = ({...persona }) => {

    persona.nombre = 'Tony'

    return persona;

    }

    let peter = { nombre: 'Peter' };

    let tony = cambiarNombre(peter);

    console.log(peter, tony);


    Ejemplo 3: con arreglo

    Esto sobre escribe el valor en ambos arreglos, esto es un problema

    const frutas = ['Manzana', 'Pera', 'Piña'];

    const otrasFrutas = frutas;

    otrasFrutas.push('Mango');

    console.table({ frutas, otrasFrutas });

    Aquí ya no sobreescribe el valor

    const frutas = ['Manzana', 'Pera', 'Piña'];

    const otrasFrutas = [...frutas];

    otrasFrutas.push('Mango');

    console.table({ frutas, otrasFrutas });

  • Callback: Una función que se coloca como argumento a otra función(Explicacion FH) Es un función que se pasa como argumento a un operación asincrona, con la espectativa de que dicha función sea ejecutada una vez esta termine(Explicacion Uriel CF)

    Definicion sencilla de un callback Es una función que nos permite recibir como parametro otra función, es una función que se pasa a otra función como argumento, son una forma de asegurarnos que un determinado codigo no se ejecute hasta que un determinado codigo allá terminado de ejecutarse

  • Promesas: es un objeto que puede producir un valor único en algún momento en el futuro: un valor resuelto o una razón por la que no se resuelve. Ejemplo:

    Crea una promesa

    const promesa = new Promise((resolve, reject) => {

    $caja = false;

    if ($caja) {

    resolve();

    } else {

    reject();

    }

    });

    promesa.then(() => {

    alert("Exito!");

    }).catch(() => {

    alert("No funciono!");

    });

  • endpoint: es la PUTA URL, cuando estamos hablando de APIs

    Datos curiosos

  • El undifened, de las funciones de JS aparece por que las funciones de Javascript tienen por default un return
  • En console.log("hola mundo"); console es un objeto y .log es un metodo(una función dentro de un objeto)
  • Cambiando colores en consola, console.log('%c mis variables','color:blue;');
  • Con console.table({a,b,c}); puedes imprimir los valores en una tabla en la consola
  • En Javascript, cualquier variable que no esté inicializada, tiene el valor de undifined
  • Depende donde quieras ejecutar Javascript es si funcionara o no, prompt o confirm, no funcionaran si ejecutaras tu programa en la consola con Node, pero si quieres imprimir la varible "global" en tu programa, Node te mostrará todo lo que tiene, ahora, prompt y confirm, funcionaran sin problema en el navegador
  • Null: sin valor, si usas typeof, te dirá que es un objeto
  • Las variables no pueden empezar con números ó caracteres raros tampoco ponerle puntos
  • Es muy raro tener 3 niveles dentro de arrays
  • Toda función devuelve "UNDIFINED", porque todas las funciones tienen un "return aunque no este escrito" cuando se tiene una función y no tiene un return "específico", devolverá "undifined"
  • Si quieres devolver 2 valores, tendras que volverlo array:

    let nombre = (nombre) => {

    console.log(nombre);

    return [1, 2];

    }

    const almacen = nombre("Ricardo");

    console.log(almacen[0], almacen[1]);

  • Diferencias entre ES6, ES7, ES8, ES-NEXT
    • ES6: Agrega las funciones flecha y otras funciones, algunas funciones deben ser transpiladas con BabelJS
    • ES7: Incluye nuevas funciones
    • ES8: Se agregan funciones Async/Await
    • ES-Next: Versión en desarrollo, nunca es liberada
  • JavaScript es el lenguaje y EcmaScript las especificaciones que uno debe de seguir
  • NodeJS es una plataforma hecha en JS utilizada par aplicaciones en servidores
  • document: cuando imprimes document en la consola del navegador te muestra todo lo que tienes en tu html, es por eso que la función .getElementById('') te ayuda a seleccionar un ID de tu documento ó un una etiqueta usando .querySelector('h1')
  • Let: para sobre-Escribir un Let, tienes que hacer esto:
    let perro = 'firulais';
    perro = 'solovino';
  • Poner comillas en el texto: \'
  • Otra manera de crear un array

    let meses = new Array('Enero', 'Febrero', 'Marzo');

    console.log(meses);

  • const cuando tiene dentro un arreglo, puede modificarse un espacio del arreglo pero no el arreglo entero
  • const las constantes con obj dentro, si se pueden cambiar sus valores

    Buenas practicas

  • No usa VAR para declarar variables, usa let, esto debido a que cuando utilizamos var lo esta colocando dentro de un objeto global llamado window donde te muestra las capacidades que tiene cada navegador web, puedes probarlo en la consola de cada navegador, escribiendo la palabra window, y ahí aparecera la variable que hayas escrito con var, esto te perjudica en que pudieses sobre escribir algún metodo, y eso ocasionará errores en tu proyecto y no sabrás que tendrás mal y esos errores son muy difíciles de rastrear
  • El orden de como importas los archivos si importa
  • Deshabilitar el cache, click derecho en chrome, inspeccionar>network> click en disable cache
  • let y const no se puede sobreescribir las variables ó constantes que se encuentran en el objeto global a menos que le agregues datos a una costante que contenga array u objeto y las constantes se tienen que declarar con un dato , no se pueden dejar vaciaswindow
  • Evita usar como variables, palabras reservadas, aquí dejo una lista
  • Let: para sobre-Escribir un Let, tienes que hacer esto:
    let perro = 'firulais';
    perro = 'solovino';
  • Poner comillas en el texto: \'
  • Usar comillas inversas para poder usar template strings, una ventaja es que respeta la identación,saltos y espacios, esto ayudara a que en los proyectos generes codigo dinámico.
  • === acostumbrarme a usarlo en los if

    Aprendizaje

  • Lógica, gramatica y sintaxis, para sacarle el máximo provecho al lenguaje
  • Sacarle el máximo a lo mínimo que tengas, y ver las cosas con humildad, eso te hace sentir bien al ver lo mucho que avanzas con tan poco.
  • Los últimos serán los primeros, la humildad me mantendra.
  • La sabiduría se consigue con la disciplina
  • -dedicar mi vida a la sabiduria, incluso en la biblia dice que vale más un buen nombre que el dinero... Es muy probable que sea cierto, porque ya he visto eso en muchos hombres ricos y poderosos

    Datos varios

  • Funcion expresada las que se guardan dentro de una variable o constante y se llaman así funcionDentroDeVariable(); pero solo se pueden ejecutar debajo de donde comenzaste a escribir la función
  • Funcion declarada son las normales, ya conocidas y se pueden ejecutar en cualquier parte del archivo, inicio, final, en medio etc
  • Array otra forma de crear un array es la siguiente let cadena = Array.of("hola", 2, true, [1, 2, "mundo"]);
  • if-else corto se llama formalmente "operador ternario" let eresMayor=(edad >= 18) ? "eres mayor de edad" : "Eres menor de edad";
  • while y while están cayendo mucho en desuso, se usan más en programación estructurada
  • For in sirve para recorrer arreglos

    let objeto = {

    nombre: "Ric",

    apellido: "Garrido",

    Edad: 33

    }

    for (const propiedad in objeto) {

    console.log(`Key: ${propiedad} --- Value: ${objeto[propiedad]}`);

    }

  • for of recorre la cadena de texto, array u objeto

    let texto = "ric";

    let cadena = [1, 2, 3, 4, 5];

    for (const iterator of cadena) {

    console.log(iterator);

    }

  • DESTRUCTURACION se usa mucho en REACT JS
  • REST & SPREAD se usan mucho en Angular, React y Vue
  • this Al usar las arrow functions y this, heredan el contesto del padre, ejemplo:

    const perro = {

    nombre: "kenai",

    ladrar: () => {

    console.log(this);

    }

    }

    Evitaran errores

  • No puedes usar una variable antes de inicializarla
  • Evita usar como variables, palabras reservadas, aquí dejo una lista
  • Toda función devuelve "UNDIFINED", porque todas las funciones tienen un "return aunque no este escrito" cuando se tiene una función y no tiene un return "específico", devolverá "undifined"
  • Si quieres devolver 2 valores, tendras que volverlo array:

    let nombre = (nombre) => {

    console.log(nombre);

    return [1, 2];

    }

    const almacen = nombre("Ricardo");

    console.log(almacen[0], almacen[1]);

  • parametros rest: no pueden llevar nada después de ellos y sirven para poder mostrar varios datos como un array, EJEMPLO:

    let persona = (nombre, ...args) => {

    return [nombre, args];

    }

    console.log(persona("Ricardo", true, 32, ["Perro", "Canada"]));

  • En Javascript, todos los objetos son pasados por referencia, Todos los primitivos son pasados por valor
  • No puedes sobreescribir una variable let ni un const
  • No podemos acceder a variables let, dentro de una función
  • En Javascript todos los objetos son pasados por referencia
  • En javascript todo es un objeto excepto los primitivos
  • Parametros REST: Es una sintaxis, cuando lo pongo como argumento dentro de una función, ES UN PARAMETRO REST, y quiere decir "Une todos los argumentos en una sola variable y transformalo como un areglo"
  • Parametros Spread: Cuando utilizas los tres puntos fuera de una funcion(EN CUALQUIER LUGAR), es un parametro SPREAD y simboliza, "separa los elementos", la ventaja es que rompe la referencia de Javascript y así podemos trabajar con objetos y hacer igualaciones que apunten a diferentes espacios en memoria
    Ejemplo:

    Esto sobre escribe el valor en ambos objetos, esto es un problema

    let juan = { nombre: 'Juan' };

    let ana = juan;

    ana.nombre = 'Ana';

    console.log(juan, ana);

    Aquí lo resolvemos apuntando a otro espacio en memoria

    let juan = { nombre: 'Juan' };

    let ana = {...juan };

    ana.nombre = 'Ana';

    console.log(juan, ana);

  • Let: para sobre-Escribir un Let, tienes que hacer esto:
    let perro = 'firulais';
    perro = 'solovino';
  • Poner comillas en el texto: \'
  • Algebra:Multiplicaciones y divisiones primero, luego sumas y restas
  • Valores boleanos

    0 = false

    -7 = true

    "" = false

    " " = true

    null = false

    undifined = false

    = true

    {} = true

    [] = true

    infinite = true

    -infinite = true

    new Date() = true

    NaN = false

    Funciones para STRINGS

  • concat une los caracteres

    const producto = 'Monitor 20 Pulgadas';

    const precio = '38USD'

    console.log(producto.concat(precio));

  • length cuenta los caracteres que tiene

    const producto = 'Monitor 20 Pulgadas';

    console.log(producto.length);

  • indexOf busca el texto en la cadena de texto, y te dice en que posición se encuentra, si arroja -1, quiere decir que no lo encontro

    const producto = 'Monitor 20 Pulgadas';

    console.log(producto.indexOf('Pulgadas'));

  • includeste arroja true or false si es que existe la palabra que estás buscando
  • const producto = 'Monitor 20 Pulgadas';

    console.log(producto.includes('Pulgadas'));

    Tipos de datos

  • Strings: cadenas de texto
  • Null: significa que no tiene nada ahí dento, NO ES LO MISMO QUE UNDIFINED, no lo confundas
  • Boleano: es true ó false
  • undifined: indefinido, que no se le ha agregado un valor
  • Number: números enteros o decimales(integers or floats)

    Operadores

  • += : te suma el valor a tu variable

    let caja = 4;

    caja += 3;

    console.log(caja);

  • -= : te resta el valor a tu variable

    let caja = 4;

    caja -= 3;

    console.log(caja);

  • if-else corto se llama formalmente "operador ternario" let eresMayor=(edad >= 18) ? "eres mayor de edad" : "Eres menor de edad";

    Datos importantes de ES6

  • Las variables let, no se pueden sobre escribir EJEMPLO:

    let nombre = "Ricardo";

    console.log(nombre);


    let nombre = "Fulano";

    console.log(nombre);

  • Let: para sobre-Escribir un Let, tienes que hacer esto:
    let perro = 'firulais';
    perro = 'solovino';
  • Aunque crees un objeto de JS con un const, podrá ser modificado con los metodos delete y Objecto.entries
  • Para evitar cualquier modificación en un objeto de JS, puedes utilizar la propiedad Object.freeze, que sirve para congelar tu objeto y se quede como lo dejaste, PERO no funciona con arrays y objetos que están dentro del objeto A MENOS que pongas la dirección específica de lo que no quieres que se modifique, ejemplo: Object.freeze(persona.amigos); ,checa el ejemplo 17
  • Toda función devuelve "UNDIFINED", porque todas las funciones tienen un "return aunque no este escrito" cuando se tiene una función y no tiene un return "específico", devolverá "undifined"
  • Si quieres devolver 2 valores, tendras que volverlo array:

    let nombre = (nombre) => {

    console.log(nombre);

    return [1, 2];

    }

    const almacen = nombre("Ricardo");

    console.log(almacen[0], almacen[1]);

  • En Javascript todos los objetos son pasados por referencia
  • En javascript todo es un objeto excepto los primitivos
  • También sirve para arreglos

    let amigos = ['Nacho', 'Urrutia', 'Jessica', 'Lau'];

    console.log(`¿ ${amigos} incluye la palabra "Lau"?`, amigos.includes('Lau'));

  • Poner comillas en el texto: \'
  • Algebra:Multiplicaciones y divisiones primero, luego sumas y restas
  • const cuando tiene dentro un arreglo, puede modificarse un espacio del arreglo pero no el arreglo entero
  • JS utiliza el paradigma de la programación orientada a objetos no basado en clases como la mayoría de los lenguajes si no basado en prototipos
  • Los operadores corto circuito se utilizan mucho en React, el OR valida a true y el AND valida a los false
  • 4 tipos de funciones anonimas autoejecutables

    //clasica

    (function() {

    console.log("Soy una función anónima autoejecutable CLASICA");

    })();

    //Crockford

    ((function() {

    console.log("Soy una función anónima autoejecutable CROCKFORD");

    })());

    //UNARIA

    +function() {

    console.log("Soy una función anónima autoejecutable UNARIA");

    }();

    //FACEBOOk

    ! function() {

    console.log("Soy una función anónima autoejecutable ESTILO FACEBOOK");

    }

  • Iterable un objeto iterable es aquel que se puede recorrer como un array, cadena de texto, objeto
  • En los arreglos hay 3 metodos muy usados Math

    Cosas demasiado útiles en JS

  • Si quieres saber que tipo de dato tiene una variable, usa typeof

    console.log(typeof nombreDeLaVariable);

  • En Javascript, todos los objetos son pasados por referencia, Todos los primitivos son pasados por valor
  • Estos 2 links te dicen que tipos de nombres puedes usar en JS, mathiasbynens y Validador de nombres
  • En javascript todo es un objeto excepto los primitivos

    Ejemplo de pasando datos por valor

    let a = 20;

    let b = 10;

    a = 30;

    console.log(juan, ana);

  • En Javascript todos los objetos son pasados por referencia

    Ejemplo de pasando datos por referencia

    let juan = { nombre: 'Juan' };

    let ana = juan;

    ana.nombre = 'Ana';

    const cambiarNombre = (persona) => {

    persona.nombre = 'Tony'

    return persona;

    }

    let tony = cambiarNombre(peter);

    console.log(peter, tony);

  • Let: para sobre-Escribir un Let, tienes que hacer esto:
    let perro = 'firulais';
    perro = 'solovino';
  • Obtener la fecha: let hoy = new Date(); console.log(hoy);
  • Obtener el día: getDay() let hoy = new Date(); let dia = hoy.getDay(); console.log(dia);
  • Obtener el año: getFullYear() let fecha = new Date().getFullYear();console.log(fecha);
  • Obtener el minuto: getMinutes() let dia = new Date(); let dato = dia.getMinutes(); console.log(dato);
  • Obtener la hora: getHours() let dia = new Date(); let dato = dia.getHours(); console.log(dato);
  • Obtener segundos: getSeconds() console.log(fecha.getSeconds());
  • Obtener fecha con letras: toDateString() console.log(fecha.toDateString);
  • Obtener fecha local: toLocalString() console.log(fecha.toLocalString);
  • Obtener hora local: toLocalTimeString() console.log(fecha.toLocalTimeString);
  • Crear una fecha que ya paso: let navidad2019 = new Date('2019-25-12'); console.log(navidad2019);
  • getMinutes y getHours sirven para usarlas en proyectos donde tengas que comparar la hora de inicio y final, y crear una variable donde pongas la diferencia
  • Modificar una fecha: let dia = new Date(); let dato = dia.setFullYear(2016); dato = dia.getFullYear(); console.log(dato);
  • Cambiar fechas,minutos, hrs de la misma manera que puedes usar getHours, puedes usar setHours y todo lo demás
  • javascript-minifier para minificar el código
  • jsonplaceholder la API REST para frontends más usada
  • Las expresiones regulares son patrones que se utilizan para hacer coincidir combinaciones de caracteres en cadenas. En JavaScript, las expresiones regulares también son objetos. Estos patrones se utilizan con los métodos exec() y test() de RegExp, y con match(), matchAll(), replace(), replaceAll(), search() y split() métodos de String Ejemplo:

    let cadena = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum";

    let expReg = new RegExp("lorem", "ig");

    //g representa que debe de buscar en todo el texto y la i , que ignore si es mayuscula o minuscula

    let expReg2 = /lorem{2}/ig

    //el de arriba es el formato más usado de las expresions regulares

    //Las llaves es para indicar cuantas veces debe estar repetida en el texto la palabra que se está buscando

    console.log(expReg.test(cadena));

    console.log(expReg.exec(cadena));

    console.log(expReg2.test(cadena));

    console.log(expReg2.exec(cadena));

    Bibliografia chingona

    Parametros REST & SPREAD

  • REST Es una sintaxis, sirve para ir agregando datos, cuando lo pongo como argumento dentro de una función, ES UN PARAMETRO REST, y quiere decir "Une todos los argumentos en una sola variable y transformalo como un areglo"
  • SPREAD Sirve para separar los datos, Cuando utilizas los tres puntos fuera de una funcion(EN CUALQUIER LUGAR), es un parametro SPREAD y simboliza, "separa los elementos", la ventaja es que rompe la referencia de Javascript y así podemos trabajar con objetos y hacer igualaciones que apunten a diferentes espacios en memoria
  • parametros rest: no pueden llevar nada después de ellos y sirven para poder mostrar varios datos como un array, EJEMPLO:

    let persona = (nombre, ...args) => {

    return [nombre, args];

    }

    console.log(persona("Ricardo", true, 32, ["Perro", "Canada"]));

  • Parametros Spread:
    Ejemplo:

    Esto sobre escribe el valor en ambos objetos, esto es un problema

    let juan = { nombre: 'Juan' };

    let ana = juan;

    ana.nombre = 'Ana';

    console.log(juan, ana);

    Aquí lo resolvemos apuntando a otro espacio en memoria

    let juan = { nombre: 'Juan' };

    let ana = {...juan };

    ana.nombre = 'Ana';

    console.log(juan, ana);

  • DESTRUCTURACION se usa mucho en REACT JS
  • REST & SPREAD se usan mucho en Angular, React y Vue
  • this Al usar las arrow functions y this, heredan el contesto del padre, ejemplo:

    const perro = {

    nombre: "kenai",

    ladrar: () => {

    console.log(this);

    }

    }

  • Parametros REST: Es una sintaxis, cuando lo pongo como argumento dentro de una función, ES UN PARAMETRO REST, y quiere decir "Une todos los argumentos en una sola variable y transformalo como un areglo"
  • Parametros Spread: Cuando utilizas los tres puntos fuera de una funcion(EN CUALQUIER LUGAR), es un parametro SPREAD y simboliza, "separa los elementos", la ventaja es que rompe la referencia de Javascript y así podemos trabajar con objetos y hacer igualaciones que apunten a diferentes espacios en memoria
    Ejemplo:

    Ejemplo 2:

    Esto sobre escribe el valor en ambos objetos, esto es un problema

    const cambiarNombre = (persona) => {

    persona.nombre = 'Tony'

    return persona;

    }

    let peter = { nombre: 'Peter' };

    let tony = cambiarNombre(peter);

    console.log(peter, tony);

    Esto sobre escribe el valor en ambos objetos, esto es un problema

    const cambiarNombre = ({...persona }) => {

    persona.nombre = 'Tony'

    return persona;

    }

    let peter = { nombre: 'Peter' };

    let tony = cambiarNombre(peter);

    console.log(peter, tony);


    Ejemplo 3: con arreglo

    Esto sobre escribe el valor en ambos arreglos, esto es un problema

    const frutas = ['Manzana', 'Pera', 'Piña'];

    const otrasFrutas = frutas;

    otrasFrutas.push('Mango');

    console.table({ frutas, otrasFrutas });

    Aquí ya no sobreescribe el valor

    const frutas = ['Manzana', 'Pera', 'Piña'];

    const otrasFrutas = [...frutas];

    otrasFrutas.push('Mango');

    console.table({ frutas, otrasFrutas });

    Objetos antiguos en javascript

  • Los objetos de manera antigua en Javascript

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    //Metodos

    this.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    console.log(snoopy);

  • PROTOTYPE:Metodos agregados desde afuera, esto evita la duplicidad de metodos

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    lolaBunny.sonar();

  • Herencia prototipica en objetos antiguos de Javascripts

  • HERENCIA PROTOTIPICA:Heredar las propiedades y metodos de otra funcion constructora

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    lolaBunny.sonar();

    -----------------------------------

    function perro(nombre, genero, tamanio) {

    //super sirve para invocar al constructor padre

    this.super = animal;

    this.super(nombre, genero);

    this.tamanio = tamanio;

    }

    perro.prototype = new animal();

    perro.prototype.constructor = perro;

    al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro incluso los prototipos, como el .sonar que tiene

  • HERENCIA PROTOTIPICA:Heredar las propiedades y metodos de otra funcion constructora

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    lolaBunny.sonar();

    -----------------------------------

    function perro(nombre, genero, tamanio) {

    //super sirve para invocar al constructor padre

    this.super = animal;

    this.super(nombre, genero);

    this.tamanio = tamanio;

    }

    perro.prototype = new animal();

    perro.prototype.constructor = perro;

    al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro incluso los prototipos, como el .sonar que tiene

  • SOBREESCRIBIENDO UN METODO HEREDADO DE UNA FUNCION(JAVASCRIPT VIEJITO)

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    lolaBunny.sonar();

    -----------------------------------

    function perro(nombre, genero, tamanio) {

    //super sirve para invocar al constructor padre

    this.super = animal;

    this.super(nombre, genero);

    this.tamanio = tamanio;

    }

    perro.prototype = new animal();

    perro.prototype.constructor = perro;

    al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro incluso los prototipos, como el .sonar que tiene

  • AGREGANDO UN METODO A UNA FUNCION HEREDADA

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    lolaBunny.sonar();

    -----------------------------------

    function perro(nombre, genero, tamanio) {

    //super sirve para invocar al constructor padre

    this.super = animal;

    this.super(nombre, genero);

    this.tamanio = tamanio;

    }

    perro.prototype = new animal();

    perro.prototype.constructor = perro;

    al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro incluso los prototipos, como el .sonar que tiene

    Clases y objetos en Javascript

  • El constructor es un metodo especial que se ejecuta en el momento de instancia de la clase
  • Propiedades y metodos estaticos: sirven para agregarle un valor a la clase fuera de una clase sin necesidad de instanciar la clase para crear un objeto. Ejemplo

    class Animal {

    //El constructor es un metodo especial que se ejecuta en el momento de instancia de la clase

    constructor(nombre, genero) {

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos

    sonar() {

    console.log("Hago sonidos porque estoy vivo");

    }

    saludar() {

    console.log(`HOla me llamo ${this.nombre}`);

    }

    }

    class Perro extends Animal {

    constructor(nombre, genero, tamanio) {

    //Con el metodo super() se manda llamar al constructor de la clase padre

    super(nombre, genero);

    this.tamanio = tamanio;

    }

    sonar() {

    console.log("Soy un perro y mi sonido es un ladrido");

    }

    ladrar() {

    console.log("GUa gua");

    }

    static queEres() {

    console.log("Soy el mejor amigo del hombre");

    }

    }

    Perro.queEres();

  • Getters y Setters son metodos especiales que nos permiten establecer y obtener los valores y atributos de nuestra clase. Los sets se acostumbra recibir un valor y no deben tener el mismo nombre que la propiedad que quieres modificar

  • Ejemplo de Set:

    class Persona {

    nombre = '';

    codigo = '';

    codigo = '';

    frase = '';

    comida = '';

    constructor(nombre = 'sin nombre', codigo = 'sin codigo', frase = 'sin frase') {

    this.nombre = nombre;

    this.codigo = codigo;

    this.frase = frase;

    }

    //los sets se acostumbra recibir un valor y no deben tener el mismo nombre que la propiedad que quieres modificar

    set setComidaFavorita(comida) {

    this.comida = comida;

    }

    quienSoy() {

    return `soy ${this.nombre} y mi identidad es ${this.codigo}`;

    }

    otraFuncion() {

    return this.quienSoy();

    }

    }

    const spiderman = new Persona('ric', 'asd', 'hurra!');

    spiderman.setComidaFavorita= 'Los chilaquiles';

    console.log(spiderman);

  • Ejemplo de Get:

    class Persona {

    nombre = '';

    codigo = '';

    codigo = '';

    frase = '';

    comida = '';

    constructor(nombre = 'sin nombre', codigo = 'sin codigo', frase = 'sin frase') {

    this.nombre = nombre;

    this.codigo = codigo;

    this.frase = frase;

    }

    //los sets se acostumbra recibir un valor y no deben tener el mismo nombre que la propiedad que quieres modificar

    set setComidaFavorita(comida) {

    this.comida = comida.toUpperCase();

    }

    //El get es para recuperar un valor

    get getComidaFavorita() {

    return `La comida favorita de ${this.nombre} es ${this.comida}`;

    }

    quienSoy() {

    return `soy ${this.nombre} y mi identidad es ${this.codigo}`;

    }

    otraFuncion() {

    return this.quienSoy();

    }

    }

    const spiderman = new Persona('ric', 'asd', 'hurra!');

    spiderman.setComidaFavorita = 'una jericalla';

    console.log(spiderman.getComidaFavorita);

    METODOS que me van a servir de Javascript

    Nota: prompt y confirm se encuentran dentro del objeto window

  • prompt: hace aparecer una ventana con un formulario y una pregunta, let nombre = prompt('¿Cómo te llamas?');
    document.getElementById('app').innerHTML = `Mi nombre es ${nombre}`;
  • confirm: similar al prompt solo que aquí te da elegir OK ó Cancel, y si lo guardas en una variable y luego imprimes la variable para ver que tiene dentro verás true ó false
  • .length: mascotas.length te dice cuantos cupos tiene un array, si no sabes cuantos cupos hay en el array por que es dinámico, se recomienda usar console.log(mascotas.length-1);
  • .push
  • : mascotas.push("datos") te agrega un nuevo dato a tu array, puede ser de cualquier tipo al final de tu array
  • JSON.stringify() convierte un objeto o valor de JavaScript en una cadena de texto JSON
  • .unshift
  • : mascotas.unshift("datos") te agrega un nuevo dato a tu array, puede ser de cualquier tipo al inicio de tu array
  • meses.shift(); : elimina la primera posición de un array
  • .pop
  • mascotas.pop(); remueve el último dato de tu array , si quieres guardar e una variable lo que se borro, puedes guardarlo en una variable let borrado = mascotas.pop():
  • .splice mascotas.splice(1, 4); Elimina el rango de elementos que tu le digas, dentro de un array
  • meses.sort(); Ordena el array en orden alfabetico y los números también de mayor a menor y menos a mayor

    Menor a mayor

    let meses = new Array(1, 2, 44, 56, 78, 98, 90, 9);

    meses.sort(function(x, y) {

    return x - y;

    });

    console.log(meses);

    Mayor a menor

    let meses = new Array(1, 2, 44, 56, 78, 98, 90, 9);

    meses.sort(function(x, y) {

    return y - x;

    });

    console.log(meses);

  • .indexOf: mascotas.indexOf("pez"); Te dice el lugar en donde se encuentra el dato que buscas, OJO: debes ponerlo exacto, mayúsculas y minúsculas
  • setTimeout: ejecuta una acción después de cierto tiempo

    Mayor a menor

    setTimeout(function() {

    spinnerGif.style.display = 'none';

    //AppendChild necesita el id de un elemento padre

    document.querySelector('#loaders').appendChild(enviado);

    }, 2000);

  • .reset() formularioEnviar.reset(); resetea todo a como estaba
  • entriesPares: const entriesPares = Object.entries(persona); console.log(entriesPares); convierte el objeto de js en arrays INCLUSO cuando creas el objeto con un const que se supone no se debería poder modificar checa el ejercicio 15
  • .getOwnPropertyNames() Object.getOwnPropertyNames(persona); te muestra las propiedades que le pusiste a tu objeto, pero en un Array, ES MUY USADO AL TRABAJAR CON OBJETOS EN JS, checa el ejercicio 18
  • Object.values() Object.values(persona) Te pone en un array los valores que tengas dentro de las propiedades que están dentro de tu objeto, checa el ejercicio 19, ES MUY USADO EN JS
  • Math.random() Te da un número aleatorio entre 0 y 1
  • .map() es una función que te muestra lo que tiene dentro un array

    const nombres = ['Carlos', 'Alejandro', 'Manuel', 'Cesar'];

    const numero_caracteres = nombres.map((nombre) => {

    console.log(`${nombre} tiene ${nombre.length} letras`);

    })

  • .startsWith('p') Checa con que letra comienza la palabra dentro de la variable

    let texto = "Hola mundo";

    console.log(`¿'${texto}' empieza con la letra 'p'?`, texto.startsWith('p'));

  • .toLocaleLowerCase().endsWith('o') Checa con que letra termina la palabra y aparte la convierte a minúscula

    let texto = "Hola mundo";

    console.log(`¿'${texto}' empieza con la letra 'p'?`, texto.startsWith('p'));

  • .toLocaleLowerCase().endsWith('o') Checa con que letra termina la palabra y aparte la convierte a minúscula

    let texto = "Hola mundo";

    console.log(`¿'${texto}' empieza con la letra 'p'?`, texto.startsWith('p'));

  • .texto.includes('Ric') Busca si contiene una palabra y te dice si es true or false

    let amigos = ['Nacho', 'Urrutia', 'Jessica', 'Lau'];

    console.log(`¿ ${amigos} incluye la palabra "Lau"?`, amigos.includes('Lau'));

    También sirve para arreglos

    let texto = "Hola mundo";

    console.log(`¿'${texto}' empieza con la letra 'p'?`, texto.startsWith('p'));

  • .find( () =>{} ) Nos devuelve El primer elemento de un arreglo que "cumpla una condición"

    let amigos = ['Nacho', 'Urrutia', 'Jessica', 'Lau'];

    console.log(amigos.find((amigo) => {
    return amigo.length > 6;
    }));

    Se puede resumir la función

    let amigos = ['Nacho', 'Urrutia', 'Jessica', 'Lau'];

    console.log(amigos.find(amigo => amigo.length > 6));

  • .findIndex() Encuentra la posición en el arreglo en el que se encuentra el dato que estás buscando

    let amigos = ['Nacho', 'Urrutia', 'Jessica', 'Lau'];

    console.log(amigos.findIndex((amigo) => {

    return amigo === 'Jessica';

    }));

  • variable.substring(2,6) te muestra las letras que hay en el texto de la variable

    let amigos = "Francisco Javier Topiltzin";

    console.log(amigos.substring(2,6))

  • variable.slice(2,6) hace lo mismo que substring

    let amigos = "Francisco Javier Topiltzin";

    console.log(amigos.substring(2,6))

  • variable.split(',') corta la cadena de texto y cada corte lo hace donde tenga el signo o la letra que tu le pongas y te pone los cortes en un string

    let amigos = "Francisco, Javier, Topiltzin";

    console.log(amigos.split(','))

  • variable.replace('Francisco', 'Pancho') hace lo mismo que substring

    let amigos = "Francisco Javier Topiltzin";

    console.log(amigos.replace('Francisco', 'Pancho'))

  • variable.repeat(10) repite la cadena de texto

    let amigos = "Francisco Javier Topiltzin";

    console.log(amigos.repeat(10))

  • También se puede acortar

    let amigos = ['Nacho', 'Urrutia', 'Jessica', 'Lau'];

    console.log(amigos.findIndex(amigo => amigo === 'Jessica'));

  • console.timeEnd('hola') Te dice cuanto tiempo tomo ejecutar dicho código.
  • Math.PI te imprime el valor de PI

    let resultado = Math.PI;

    console.log(resultado);

  • Math.round() redondea hacia arriba o abajo

    let resultado1 = Math.round(2.49);

    console.log(resultado1);

  • Math.PI te da el valor de PI
  • Math.floor(7.8) te redondea hacia abajo
  • Math.abs(-7.8) te da el valor absoluto de un número(si es positivo te lo pone positivo y si es negativo te lo pone positivo)
  • Math.sign(8) te da un 1 o -1 dependiendo si el número es positivo o negativo
  • Math.ceil(2.49) redondea hacia arriba siempre

    let resultado1 = Math.ceil(2.49);

    console.log(resultado1);

  • Math.floor(2.49) redondea hacia abajo siempre

    let resultado1 = Math.floor(2.49);

    console.log(resultado1);

  • Math.sqrt() saca la raíz cuadrada

    let resultado1 = Math.sqrt(144);

    console.log(resultado1);

  • Math.abs(-3) Ejercicio te devuelve el número absoluto(lo negativo lo vuelve positivo)

    let resultado1 = Math.abs(-3);

    console.log(resultado1);

  • Math.pow(144) te eleva el número a la potencia que le digas

    let resultado1 = Math.pow(144);

    console.log(resultado1);

  • Math.min(2,4,6,7,8,9) te devuelve el número más pequeño

    let resultado1 = Math.min(2,4,5,6,78,9);

    console.log(resultado1);

  • Math.max(2,4,6,7,8,9) te devuelve el número mayor

    let resultado1 = Math.max(2,4,5,6,78,9);

    console.log(resultado1);

  • Math.random() te da un valor aleatorio del 0 al 0.99

    let resultado1 = Math.random();

    console.log(resultado1);

  • Number(caja1) transforma la cadena de texto a número

    let caja = 4;

    let caja1 = '4';

    console.log(typeof Number(caja1));

  • parseInt(caja1) TAMBIÉN transforma la cadena de texto a número

    let caja = 4;

    let caja1 = '4';

    console.log(typeof parseInt(caja1));

  • String(caja) transforma el número a cadena de texto

    let caja = 2;

    console.log(typeof String(caja));

  • caja.toString() transforma el número a cadena de texto

    let caja = 2435;

    console.log(typeof caja.toString());

  • caja.concat(caja2) une 2 arreglos en 1

    let meses = new Array('Enero', 'Febrero', 'Marzo');

    let numeros = [1, 2, 3];

    console.log(meses.concat(numeros));

  • caja.concat(caja2,caja3,caja4) une varios arreglos en 1

    let meses = new Array('Enero', 'Febrero', 'Marzo');

    let numeros = [1, 2, 3];

    let numeros1 = [4, 5, 6];

    let numeros2 = [7, 8, 9];

    console.log(meses.concat(numeros, numeros1, numeros2));

  • toFixed(1);: te imprime el número de decimales que le indiques

    Mayor a menor

    let c = 7.19;

    console.log(c.toFixed(1));

  • Obtener la fecha: let hoy = new Date(); console.log(hoy);
  • Obtener el día: let hoy = new Date(); let dia = hoy.getDay(); console.log(dia);
  • throw: te da un mensaje de error, ejemplo : throw "No hay cartas en el deck";
  • Object.keys(ric); te da los llaves(los nombres de las propiedades del objeto) del objeto console.log(Object.keys(ric));
  • objeto.hasOwnProperty("nombre")imprimira true or false para decirte si existe o no la propiedad en el objeto
  • Metodos que se usan en console.

    • console.error() te imprime el resultado de color rojo
    • console.warn() te imprime el resultado de color amarillo
    • console.info()te imprime el resultado de color normal
    • Imprimir como en C con console.log("Mi nombre es %s",nombre)
    • console.clear() limpiar toda la consola
    • console.log(window) te muestra las propiedades del objeto window
    • console.log(document) es la representación del documento html a traves de javascript, te muestra el contenido(las etiquetas html)
    • console.dir(document) te muestra todas las propiedades y objetos que tiene document
    • console.group("Un titulo") sirve para crear una lista con console.log. Ejemplo:

      console.group("Titulo del grupo")

      console.log("Un nombre");

      console.log("Otro nombre");

      console.groupEnd();

    • console.groupEnd(); sirve para cerrar el grupo
    • console.table(Object.entries(console).sort()) te crea una tabla con todos les metodos que puede usar el objeto console y el sort lo puse para que me lo ponga en orden alfabetico

      const numeros = [1,2,3,4,5];

      console.log(numeros);

      const vocales = ["a","e","i","o","u"];

      console.log(vocales);

      const gato = {nombre: "Alvin",color: "albinegro",raza:"mestizo"};

      console.log(gato);

    • console.time(); Te dice cuanto tiempo tarda tu código en ejecutarse Ejemplo:

      console.time("Cuanto tiempo tarda");

      const arreglo = Array(1000000);

      for(let i = 0; arreglo.length; i++);{

      arreglo[i] = i;

      }

      console.timeEnd("Cuanto tiempo tarda");

    • Te dice cuantas veces se ha ejecutado tu código, por ejemplo cuantas veces el usuario ejecuto el evento al darle click a un boton ó cuantas conexiones tuvo que hacer para llegar a cierta solicitud. Ejemplo:

      for(let i = 0; arreglo.length; i++);{

      console.count("Codigo for");

      console.log(i);

      }

    • console.assert() sirve para comenzar aprender pruebas unitarias Ejemplo:

      let x = 3;

      let y = 2;

      pruebaXY = "Se espera que X siempre sea mayor";

      console.assets(x < y (x,y,pruebaXY));

Callback

Una función que se coloca como argumento a otra función(Explicacion FH) Es un función que se pasa como argumento a un operación asincrona, con la espectativa de que dicha función sea ejecutada una vez esta termine(Explicacion Uriel CF)

Definicion sencilla de un callback Es una función que nos permite recibir como parametro otra función, es una función que se pasa a otra función como argumento, son una forma de asegurarnos que un determinado codigo no se ejecute hasta que un determinado codigo allá terminado de ejecutarse, es muy útil cuando los tiempos de respuesta ó carga del servidor tienen una demora

Promesas

es un objeto que puede producir un valor único en algún momento en el futuro: un valor resuelto o una razón por la que no se resuelve. Ejemplo:

Crea una promesa

const promesa = new Promise((resolve, reject) => {

$caja = false;

if ($caja) {

resolve();

} else {

reject();

}

});

promesa.then(() => {

alert("Exito!");

}).catch(() => {

alert("No funciono!");

});

    Definiciones varias

  • Procesamiento Single thread y multi thread
  • Single thread: solo puede ejecutar una cosa a la vez
  • Operaciones de CPU y Operaciones de I/O
  • Operaciones de CPU: siempre están procesando como un FOR en el navegador
  • Operaciones de I/O: Están esperando una respuesta como cuando se procesa un pago en linea
  • Operaciones concurrentes y paralelas
  • Concurrencia: 2 o más tareas progresan simultaneamente(una empezo antes y otra después), se ejecutan al mismo tiempo
  • Paralelismo: 2 o más tareas se ejecutan al mismo tiempo(al unisono)
  • Operaciones bloqueantes y No bloqueantes: se refiere a la fase de espera cada que se va ejecutando una operación de nuestro codigo
  • Bloqueante: es aquella que no va a devolverle el control a la aplicacion hasta que termine su tarea
  • No Bloqueante: se ejecutan y devuelven inmediatamente el control al hilo principal sin importar si han terminado la tarea
  • Operaciones Sincronas y Asincronas se refiere a cuando tendra lugar la respuesta
  • Sincrono: sucede en el tiempo inmediato, una funcion sincrona espera el resultado y sigue con otra operacion
  • Asincrono: la respuesta sucede en el futuro, no va a esperar el resultado, suelta el control del hilo JS es asincrono y no bloqueante, no se bloquea el unico hilo, JS ees altamente concurrente JS tiene un solo hilo de ejecucion JS la ultima tarea en entrar es la primera en salir. LIFO(last in-First out)
  • En JS hay 2 tipos de codigo:
  • -Sincrono bloqueante: cada operacion se hace de una vez bloqueando el flujo del hilo principal, una vez se procese pasa a la sig operacion hasta que se terminen las operaciones
  • -Asincrono no bloqueante: se manda la labor a la fila de tareas y sigue con otra y no bloquea el flujo del hilo

this

  • this.type: te dice el tipo de dato o lo que esta seleccionando, si fuera un formulario, te diria si es de tipo text, email o textarea

    DOM

  • document al ejecutar esto en la consola del navegador chrome te mostrará todo lo que hace referencia a la página html
  • document.querySelector('body') querySelector SELECCIONA la etiqueta que le digas y siempre seleccionara la primera en su tipo que encuentre en tu documento html, puedes guardar esta seleccion dentro de una variable, ejemplo: const divBotones = document.querySelector('#divBotones');
  • document.querySelectorAll('img') SELECCIONA todas las etiquetas de su mismo tipo en tu documento html
  • document.querySelector('img').src te dice la ruta de tu imagen, solo te selecciona la primera
  • document.querySelector('#principal a:first-child') selecciona los selectores de css
  • document.querySelector('#principal').getElementByClassName('.titulo'); seleccionas el id que contenga la clase fulana
  • const encabezado = document.querySelector('#hero'); puedes seleccionar id y clases usando querySelector
  • document.getElementById('hero').textContent; te muestra el contenido del texto
  • document.querySelector('small').innerText te AGREGA texto ó número, PERO no agrega html
  • document.querySelector('small').innerHTML te AGREGA texto, números y etiquetas HTML
  • document.getElementById('computadora-cartas'); SELECCIONA un elemento que tenga el id que le indicaste
  • document.getElementById('computadora-cartas').textContent; MUESTRA el texto que tiene el id que le indicaste
  • document.getElementById('computadora-cartas').innerText; MUESTRA el texto que tiene el id que le indicaste
  • document.getElementById('computadora-cartas').className; MUESTRA la clase que tiene el id que le indicaste
  • document.getElementById('computadora-cartas'); es lo mismo que document.querySelector('#computadora-cartas')
  • document.querySelector('.carta'); te SELECCIONA elemento que tenga esa clase PERO solo 1 elemento
  • const divBotones = document.querySelector('#divBotones'); puedes GUARDAR UNA SELECCION de una id ó clase
  • document.getElementsByClassName('.carta'); te SELECCIONA TODOS los elementos que tengan esa clase
  • document.getElementsByClassName('.otraClase')[3]; te SELECCIONA TODOS los elementos que tengan esa clase y le puedes poner la psicion del array
  • document.createElement('button'); CREA un elemento, y también se puede almacenar en una variable const botonNuevo = document.createElement('button');
  • document.getElementByTagName('div'); SELECCIONA la etiqueta HTML
  • botonNuevo.innerText = "Destruir"; AGREGA texto a tu elemento creado
  • divBotones.append(botonNuevo) AGREGA AL DOM usando APPEND
  • botonNuevo.classList.add('btn-success'); AGREGAR estilos a algo que yo he creado, seleccionado y guardado en variables o constantes
  • window.outerHeight te dice la altura del navegador altura = window.outerHeight
  • window.outerWidth te dice el ancho del navegador altura = window.outerWidth
  • window.innerHeight te dice la altura de la ventana del navegador altura = window.outerHeight
  • window.innerWidth te dice el ancho de la ventana del navegador altura = window.outerWidth
  • window.location te da información acerca de la URL, mucha info, recuerda que es un objeto, puedes acceder a info más específica usando "." , ejemplo: window.location.port window.location.href='https://twitter.com'
  • window.navigator: Te dice los datos del navegador y como también es un objeto puedes pedirle más datos window.navigator.appName
  • document.all te dice cuantos elemtos tiene tu document(etiquetas html y con que ids y clases)
  • document.all[119] seleccionas la etiqueta de tu documento en específico
  • document.URL: te da la url
  • document.forms te da los formularios
  • document.forms[0] seleccionas el primer formulario
  • document.forms[0].id selecciona el id del formulario y te lo muestra
  • document.forms[0].classNameselecciona la clase del formulario y te la muestra
  • document.forms[0].classList te muestra las clases que tenga el formulario o cualquier clase
  • document.forms[0].classList[0]te muestra la clase según el número que le pongas en el array
  • document.images te muestra cuantas imagenes hay y cuales tienen id y clase
  • document.images[2] te muestra la imagen su src, como se llama la imagen y si tiene ancho o altura etc
  • document.images[2].src te da el src de la imagen
  • nodeName son las etiquetas html, los nodos al final son nuestras etiquetas de html console.log('caja.nodeName'); la consola te regresa la etiqueta que este guardada en la variable caja
  • children te regresa las etiquetas html que hayas seleccionado y almacenado en la variable const navegacion = document.querySelector('#principal');
    console.log('navegacion.children')
  • childElementCountconsole.log('cursos[0].childElementCount'); te cuenta el número de elementos hijos
  • parentElement const cursos = document.querySelectorAll('.card'); console.log('cursos[0].parentElement.parentElement.parentElement'); te da el padre o la etiqueta mayor al padre, puedes ir tan afuera como quieras, a esto se le llama transversinTRANSVERSING
  • previousElementSiblingconst enlaces = document.querySelectorAll('.enlace'); console.log('enlaces[0].previousElementSibling');te SELECCIONA el elemento previo
  • createElement ejemplo más abajo
  • appendChildnuevoEncabezado.appendChild(document.createTextNode('Otro titulo')); todo puede ser agregado al DOM
  • remove();const enlaces = document.querySelectorAll('.enlace'); enlaces[0].remove();remueve
  • removeChild();const navegacion = document.querySelector('#principal'); navegacion.removeChild(enlaces[0]);Otra manera de borrar
  • classListelemento = primerLi.classList.add('nueva-clase'); Te dice todas las clases que contenga tu elemento seleccionado
  • getAttributeelemento = primerLi.getAttribute('href'); CONSIGUE los atributos del html
  • setAttributeprimeLi.setAttribute('href','http://facebook.com'); REDECLARA el atributo del HTML
  • hasAttributeprimerLi.hasAttribute('data-id');comprueba si tienes un atributo
  • removeAttributeprimerLi.removeAttribute('data-id'); remueve el atributo
  • Convertir HTMLCollection en un array(o culquiera de los ejemplo de arriba) let imagenes = document.images; let imagenesArr = Array.from(imagenes) console.log(imagenesArr);
  • Ejemplo de document.images con función Array que convierte un HtmlCollection en un array

    let imagenes = document.images;

    let imagenesArr = Array.from(imagenes);

    console.log(imagenesArr);

  • Ejemplo donde usa forEach para mostrar cada imagen

    imagenesArr.forEach(function(imagen){

    console.log(imagen);

    });

    DOM MOdificar CSS

  • let encabezado;

    encabezado = document.getElementById('encabezado');

    encabezado.style.background='#333'

    encabezado.style.color='#fff'

    encabezado.style.padding='20px'

    encabezado.textContent='Los mejores cursos'

    encabezado.innerText='Los mejores cursos'

    console.log(encabezado);

  • Ejemplo creando elementos con createElement

    const enlace = document.createElement('a');

    //agregamos una clase

    enlace.className='enlace';

    //añadir id

    enlace.id = 'nuevo-id';

    //agregamos el atributo href

    enlace.setAttribute('href','#')

    //Añadir el texto

    enlace.textContent = 'Nuevo Enlace';

    //Otra manera de agregar texto

    enlace.appenChild(document.createTextNode('Nuevo enlace'))

    //agregando todo esto en el id que le estás indicando de tu proyecto

    document.querySelector('#secundaria').appendChild(enlace);

  • Ejemplo reemplazando elementos con replaceChild

    const nuevoEncabezado = document.createElement('h2');

    //agregamos una id

    nuevoEncabezado.id ='encabezado';

    //agregar nuevo texto

    nuevoEncabezado.appendChild(document.createTextNode('Los mejores cursos'));

    //elemento que sera reemplazado

    const anterior = document.querySelector('#encabezado');

    //Elemento padre

    const elPadre = document.querySelector('#lista-Cursos');

    //Reemplazando

    elPadre.replaceChild(nuevoEncabezado,anterior)

  • Agregando y quitando clases

    const primerLi = document.querySelector('.enlace');

    let elemento;

    //Obtener una clase de CSS: Ejemplo 1

    elemento = primerLi.className;

    elemento = primerLi.classList.add('nueva-clase');

    elemento = primerLi.classList.remove('vieja-clase');

    elemento = primerLi.classList;

    //Modificar atributos: Ejemplo 2

    elemento = primerLi.getAttribute('href');

    primeLi.setAttribute('href','http://facebook.com');

    Event Listeners

  • addEventListener('click',function(e){})

    Evento click

    document.querySelector('#buscador').addEventListener('click',function(e){)

    //para que no te lleve a la página # al dar el click

    e.preventDefault();

    alert('Buscando cursos');

    });

    Si no ponemos el e.preventDefault(); nos lleva a la url con #, esto es por que en nuestro form tenemos un action"#" , a esto se le conoce como la acción por defalt, no solo se le puede poner function(e), también se le puede poner function(event) ó function(evt), son convenciones que a la gente le gusta usar, el e.preventDefault(); suele usarse para comprobar que todos los campos tengan ciertos datos, realizar algún calculo ó comprobar disponibilidad

    Evento click (Otra forma de ejecutarlo)

    //OJO, la funcion que llamas, no debe llevar parentesis(me refiero a la funcion ejecturar)

    document.getElementById('submit-buscador').addEventListener('click', ejecutar);

    //La e y el e.preventDefault van aquí en la función

    function ejecutar(e) {

    e.preventDefault();

    alert("Ejecutando desde una funcion");

    }

    Con esto puedes ver la información que almacena el event, como las coordenadas de los pixeles donde diste click, el tamaño del navegador ó el elemento al que le diste click

    document.querySelector('#submit-buscador').addEventListener('click',ejecutar)

    function ejecutar(e) {

    e.preventDefault();

    let elemento;

    elemento = e;

    elemento = e.target;

    console.log(elemento);

    }

    También puedes imprimir en consola cualquier cosa a lo que le des click

    document.querySelector('#encabezado').addEventListener('click',function(e)){

    console.log(e.target.innerText);

    )};

    O modificar un texto en el DOM

    document.querySelector('#encabezado').addEventListener('click',function(e)){

    e.target.innerText = "Nuevo Encabezado";

    )};

  • mouseenter solo pasar por encima el cursor del mouse

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('mouseenter',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

  • mouseleave salir del boton con el cursor del mouse

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('mouseleave',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

  • mouseover ejecuta el codigo cada vez que pases por encima del boton

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('mouseover',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

  • mouseup Se ejecuta cuando das click pero hasta que sueltes el click

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('mouseup',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

    Eventos para formularios

  • keydown Es un evento que se ejecuta cada que estás escribiendo

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('keydown',obtenerEvento)

    function obtenerEvento(e){

    console.log(busqueda.value)

    console.log(`EVENTO: ${e.type}`);

    }

    Puede ser bueno si realizas un buscador en una empresa, si comienzas a escribir un apellido, que te vaya filtrando los nombres con ese apellido

  • keypress Es lo mismo que keydown

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('keypress',obtenerEvento)

    function obtenerEvento(e){

    document.querySelector('#encabezado').innerText = encabezado.value;

    console.log(`EVENTO: ${e.type}`);

    }

    En este ejemplo imprime lo que escribes como si fuera ANgular o React

  • focus se ejecuta cada que das click en el formulario

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('focus',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

  • blur se ejecuta cada que das click fuera del formulario

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('blur',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

    Normalmente se utiliza para cuando validas un formulario, cuando el usuario de click fuera del formulario, comprobar cuantos caracteres escribió el usuario, y decir si el campo es obligatorio

  • copy se ejecuta cada que el usuario copia texto

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('copy',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

  • paste se ejecuta cada que el usuario pega texto

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('paste',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

  • input se ejecuta cada que el usuario haga alguno de las cosas que he puesto en los ejemplos pasados

    const boton = document.querySelector('#vaciar-carrito');

    boton.addEventListener('input',obtenerEvento)

    function obtenerEvento(e){

    console.log(`EVENTO: ${e.type}`);

    }

  • event bubbling cuanddo se propaga un evento click porque hay varios hijos dentro de un padre

    //Asi se detiene el evento bubbling con e.stopPropagation

    const card = document.querySelector(.card);

    const infoCursos = document.querySelector('.info-card')

    const agregarCarrito = document.querySelector('.agregar-carrito');

    card.addEventListener('click',function(e){

    console.log('Click en Card');

    e.stopPropagation

    });

    infoCurso.addEventListener('click',function(e){

    console.log('Click en Info Curso');

    });

    agregarCarrito.addEventListener('click',function(e){

    console.log('click en agregar a Carrito')

    });

  • ELiminar elementos del DOM

    //Asi se detiene el evento bubbling con e.stopPropagation

    document.body.addEventListener('click',eliminarElemento);

    function eliminarElemento(e){

    e.preventDefault();

    if(e.target.classList.contains('borrar-curso')){

    console.log(e.target.parentElement.parentElement.remove());

    }

    }

    Local storage

    En el local storage se puede guardar solo texto, si quieres guardar varias cosas, tendras que guardarlo en un arreglo

  • Agregar un local storage: localStorage.setItem('nombre', 'Ricardo');
  • Agregar un Session storage: sessionStorage.setItem('pais', 'Canada');
  • Notes: En el navegador debes de ir a la pestaña de application para ver el local storage y session storage y si quieres borrar el local storage, presiona la X
  • Remover una key: localStorage.removeItem('nombre');
  • Conseguir el key: const nombre = localStorage.getItem('nombre');
  • Limpiar el local StoragelocalStorage.clear();

Consejo

Acostumbrate a trabajar con document.querySelector('') porque con el puedes hacer todo y así no te tienes que acordar de lo demás como, .ElementsByClassName etc

    Resumen de un flujo de trabajo

  1. Selecciona y almacena esa seleccion en un elemento const divBotones = document.querySelector('#divBotones');
  2. Crea un elemento y almacenalo const botonNuevo = document.createElement('button');
  3. Agrega testo al elemento creado botonNuevo.innerText = "Texto y más texto";
  4. Agrega al DOM un elemento ya creado y ya almacenado divBotones.append(botonNuevo)
  5. Dale estilos a lo agregado al DOM botonNuevo.classList.add('btn-success');

    Import y export

  • Import: es una función que sirve para usar el valor/accion de una constante, variable ó función para que se use en otro archivo de javascript(modulo). Ejemplo:

    import { pi } from './constantes.js';

    import { aritmetica } from './aritmetica.js';

    console.log(pi);

    console.log(aritmetica.sumar(3, 4));

  • Export: es una función que permite compartir el valor de una variable, constante o función. Ejemplo

    export const pi = Math.PI;

    export let usuario = "Ric";

    let password = 123;

    export default function saludar() {

    console.log("Hola Modulos +ES6");

    }

  • export default es una función que sirve para exportar valores y funciones a tu modulo principal, sin la necesidad de importarla en el modulo principal, la función lo hará por ti y podrás usarla. Ejemplo

    ARCHIVO constants.js

    export default function saludar() {

    console.log("Hola Modulos +ES6");

    }

    Archivo modulos.js

    import saludar, { pi } from './constantes.js';

    saludar();

    Nota importante

    El export default sirve también en las variables y funciones pero se tiene que declarar en un renglon distinto a donde declaramos la variable o constante. Ejemplo:

    ARCHIVO constants.js

    let password = 123;

    export default password;

    Archivo modulo.js

    import password, { pi, saludar } from './constantes.js';

    console.log(password);

    También se puede exportar por default una clase

    Archivo constantes.js

    export default class padre {

    constructor() {

    console.log("Hola hijo");

    }

    }

    Archivo modulos.js

    import padre, { pi, password, saludar } from './constantes.js';

    let hijo = new padre;

    hijo;

  • Alias sirve para cambiarle el nombre a la función que estás importando. Ejemplo:

    Archivo aritmetica.js

    function sumar(a, b) {

    return a + b;

    }

    function restar(a, b) {

    return a - b;

    }

    export const aritmetica = {

    sumar,

    restar

    }

    Archivo modulos.js

    import { aritmetica as calculos } from './aritmetica.js';

    console.log(calculos.sumar(3, 4));

    Referencias

  • Mozilla parece que ya tiene mejores referencias
  • Free Code Camp Entrenamiento de JS
  • dev.to Artículos chingones sobre JS
  • Metricas JS
  • Hot frameworksFrameworks más usados
  • JS Video games

    The last three and the first are the best

  • Code Combat
  • Codin Game
  • Screeps
  • JS Dares
  • Crunchzilla

Ejercicio 1

Array que tenga strings

let animales = ['Perro', 'Gato', 'Pez'];

console.log(animales[2]);

Ejercicio 2

Array que tenga strings y números

let datos = [19, 'Gato', 22];

console.log(datos[0]);

Ejercicio 3

Array que tenga strings, números y boleanos

let datos = [19, 'Gato', true];

console.log(datos[2]);

Ejercicio 4

Array que tenga strings, números, boleanos y nulos

let datos = [19, 'Gato', true, null];

console.log(datos[3]);

Ejercicio 5

Array que tenga strings, números, boleanos, nulos y funciones

let datos = [19, 'Gato', true, null, function name() {}];

console.log(datos[4]);

Ejercicio 6

Array que tenga strings, números, boleanos, nulos, funciones y un array con datos anteriores

let datos = [19,
'Gato',
true,
null,
function name() {},
["Canada ", "Suiza ", "Germany "]
];

console.log(datos[3]);

Ejercicio 7

El metodo length te muestra cuantos cupos tiene un array

let mascotas = ["perro", "gato", "perico"];

console.log(mascotas.length);

Ejercicio 8

El metodo .push() Te agrega un nuevo dato a tu array al final

let mascotas = ["perro", "gato", "perico"];

mascotas.push("Pez");

console.log(mascotas.length);

console.log(mascotas);

Ejercicio 9

El metodo .unshift("dato") Te agrega un nuevo dato a tu array pero al inicio

let mascotas = ["perro", "gato", "perico"];

mascotas.unshift("Caracol");

console.log(mascotas.length);

console.log(mascotas);

Ejercicio 10

El metodo .pop(); Borrar el último dato de tu array

let mascotas = ["perro", "gato", "perico"];

let borrado = mascotas.pop();

console.log(mascotas.length);

console.log(mascotas);

console.log("La mascota que se borro fue: " + borrado);

Ejercicio 11

El metodo .splice(1, 4); Elimina el rango de elementos que tu le digas, dentro de un array

let mascotas = ["perro", "gato", "perico", "pez", "hamster", "mapache"];

let elementosBorrados = mascotas.splice(1, 4);

console.log(mascotas.length);

console.log(mascotas);

console.log(elementosBorrados);

Ejercicio 12

El metodo length Te dice el lugar en donde se encuentra el dato que buscas, OJO: debes ponerlo exacto, mayúsculas y minúsculas

let mascotas = ["perro", "gato", "perico", "pez", "hamster", "mapache"];

let indice = mascotas.indexOf("pez");

console.log(indice);

Ejercicio 13

Crear un objeto y mostrar su contenido

let persona = {

nombre: "Ricardo",

edad: 33,

vivo: true,

amigos: ["El capi",

"Luis",

"Nacho"

],

otrosAmigos: {

unila: ["Ruben",

"Jessica"

],

secu1: "Urrutia",

uni: {

elMorro: "Samuel",

yuri: "Yuriliana",

Laurrirrichan: "Laura"

}

}

Ejercicio 14

Crear un objeto y mostrar su contenido Y BORRAR una propiedad del objeto

let persona = {

nombre: "Ricardo",

edad: 33,

vivo: true,

amigos: ["El capi",

"Luis",

"Nacho"

],

otrosAmigos: {

unila: ["Ruben",

"Jessica"

],

secu1: "Urrutia",

uni: {

elMorro: "Samuel",

yuri: "Yuriliana",

Laurrirrichan: "Laura"

}

}

delete persona.vivo;

console.log(persona);

Ejercicio 15

Convertir todo un objeto en un array

let persona = {

nombre: "Ricardo",

edad: 33,

vivo: true,

amigos: ["El capi",

"Luis",

"Nacho"

],

otrosAmigos: {

unila: ["Ruben",

"Jessica"

],

secu1: "Urrutia",

uni: {

elMorro: "Samuel",

yuri: "Yuriliana",

Laurrirrichan: "Laura"

}

}

delete persona.vivo;

const entriesPares = Object.entries(persona);

console.log(entriesPares);

Ejercicio 16

Agregar una nueva propiedad al objeto

let persona = {

nombre: "Ricardo",

edad: 33,

vivo: true,

amigos: ["El capi",

"Luis",

"Nacho"

],

otrosAmigos: {

unila: ["Ruben",

"Jessica"

],

secu1: "Urrutia",

uni: {

elMorro: "Samuel",

yuri: "Yuriliana",

Laurrirrichan: "Laura"

}

}

persona.casado = false;

console.log(persona);

Ejercicio 17

Crea un objeto y bloquea una modificación usando el metodo Object.freeze, que sirve para congelar tu objeto y se quede como lo dejaste

let persona = {

nombre: "Ricardo",

edad: 33,

vivo: true,

amigos: ["El capi",

"Luis",

"Nacho"

],

otrosAmigos: {

unila: ["Ruben",

"Jessica"

],

secu1: "Urrutia",

uni: {

elMorro: "Samuel",

yuri: "Yuriliana",

Laurrirrichan: "Laura"

}

}

Object.freeze(persona);

Object.freeze(persona.amigos);

persona.amigos[0] = "Andres";

persona.edad = 18;

console.log(persona);

Ejercicio 18

Usa el metodo Object.getOwnPropertyNames(); que te muestra las propiedades que le pusiste a tu objeto, pero en un Array

let persona = {

nombre: "Ricardo",

edad: 33,

vivo: true,

amigos: ["El capi",

"Luis",

"Nacho"

],

otrosAmigos: {

unila: ["Ruben",

"Jessica"

],

secu1: "Urrutia",

uni: {

elMorro: "Samuel",

yuri: "Yuriliana",

Laurrirrichan: "Laura"

}

}

const propiedades = Object.getOwnPropertyNames(persona);

console.log(propiedades);

Ejercicio 19

Muestra en un array los valores que tengas dentro de las propiedades que están dentro de tu objeto, usando Object.value()

let persona = {

nombre: "Ricardo",

edad: 33,

vivo: true,

amigos: ["El capi",

"Luis",

"Nacho"

],

otrosAmigos: {

unila: ["Ruben",

"Jessica"

],

secu1: "Urrutia",

uni: {

elMorro: "Samuel",

yuri: "Yuriliana",

Laurrirrichan: "Laura"

}

}

const valores = Object.values(persona);

console.log(valores);


    ES6

    WebPack

    TypeScript

    Angular

  • 3 Ways to Render Large Lists in Angular

    ReacJS

    VueJS

  • The easiest way to build forms with Vue

    Libraries

  • Introduction to d3
  • Test your tests
  • Bootstrap Treeview A very simple plugin to build a basic and elegant Treeview with bootstrap 4
  • lightbox2 Puedes hacer galerías
  • Moment JS Sirve para los usos horarios y el tiempo.

    Best practice and Tips

  • 4 Best Practices to Write Quality JavaScript Modules

    API's

  • Json Place Holder

    PLuggins de pinshi chrome alv

  • Json Formatter
  • wappalyzer
  • Vue JS Dev Tools
  • Redux Dev Tools
  • React Developer Tools

try catch

Cuando no quieres que se detenga la ejecución de tu programa

Usalo cuando las funciones no sabes si vayan a tener datos, si llegan vacias, no llenes tu codigo de try catch

Normalmente se usa cuando descargas un listado de clientes, NO LO USES para agregar una clase o algo en el html

Esto solo se puede con las funciones antiguas de JS, con las flechas primero se declara la funcion

Ejercicio 1: Imprimir con template strings

let name = "Ricardo";

let age = 33;

let country = "Mexico";

console.log(`My name is ${name} I am ${age} and I am from ${country}`);

EJERCICIO 1.01: Imprime las 3 maneras de escribir un String

const producto1 = "Monitos 20 pulgadas";

const producto2 = String("Monitor 24 pulgadas");

const producto3 = new String('Monitor 27 pulgadas');

console.log(producto1);

console.log(producto2);

console.log(producto3);

console.log(typeof(producto3));

EJERCICIO 2: Declarar constantes e imprimirlas

const caja = 21;

console.log(caja);

EJERCICIO 3: declara un array e imprimelo

let cadena = ["Mexico", "USA", "Canada"];

console.log(cadena);

EJERCICIO 4: declara un objeto e imprimelo

let unPinshiObjeto = {

nombre: 'Pedro',

apellido: "Martinez",

edad: 24

}

console.log(unPinshiObjeto);

EJERCICIO 5: agrega datos a un array usando la funcion PUSH

let cadena = ["Mexico", "USA", "Canada"];

cadena.push("Greenland");

console.log(cadena);

Agrega datos a un array constante

const cadena = ["Mexico", "USA", "Canada"];

cadena.push("Greenland");

console.log(cadena);

EJERCICIO 7: Agrega datos a una constante objeto

const unPinshiObjeto = {

nombre: 'Pedro',

apellido: "Martinez",

edad: 24

}

unPinshiObjeto.correo = "correo@correo.com";

console.log(unPinshiObjeto);

Agregar datos a un objeto desde una variable

let nombre = "ric";

let edad = 33;

const persona = {

nombre: nombre,

edad: edad,

frase: function() {

console.log("Eres un crack!");

}

}

console.log(persona.edad);

Ejercicio 9: Resumir la escritura del ejercicio anterior

let nombre = "ric";

let edad = 33;

const persona = {

nombre,

edad,

frase() {

console.log("Eres un crack!");

}

}

console.log(persona.nombre);

Ejercicio 1, hacer los días de la semana con if-else-else if

let dia = 6;

if (dia === 0) {

console.log(`Es Lunes`);

} else if (dia === 1) {

console.log(`Es Martes`);

} else if (dia === 2) {

console.log(`Es Miércoles`);

} else if (dia === 3) {

console.log(`Es Jueves`);

} else if (dia === 4) {

console.log(`Es Viernes`);

} else if (dia === 5) {

console.log(`Es Sábado`);

} else if (dia === 6) {

console.log(`Es Domingo`);

}

conseguir la fecha

let day = new Date();

console.log(day);

Ejercicio 3, conseguir el día de la fecha

const hoy = new Date();

let dia = hoy.getDay();

console.log(dia);

Ejercicio 4, programa que imprima si es fin de semana ó entre semana Y si está abierto o cerrado

dia = 0;

apertura = 9;

if (dia === 6 || dia === 0) {

console.log(`It's weekend!`);

} else {

console.log(`It's weekday!`);

}

if (apertura >= 8 || apertura <= 21) {

console.log(`It's open`);

} else {

console.log(`It's close!`);

}

Ejercicio 5, hacer el ejercicio 4 con el metodo "includes"

dia = 1;

apertura = 7;

if ([0, 6].includes(dia)) { //metodo que tienen los arreglos para preguntar si algo existe dentro de ese arreglo

console.log(`It's weekend!`);

} else {

console.log(`It's weekday!`);

}

if (apertura >= 8 && apertura <= 21) {

console.log(`It's open`);

} else {

console.log(`It's close!`);

}

Ejercicio 6, resumir el ejercicio 4 y 5 con if corto(se llama en si, operador condicional ternario)

const dia = 5;

const horaActual = 7;

let mensaje;

// '?' es 'if' ,':' es el 'else'

horaApertura = ([0, 6].includes(dia)) ? 9 : 11;

mensaje = (horaActual >= horaApertura) ? "Esta abierto" : `Esta cerrado, hoy abrimos a las ${horaApertura}`;

console.log(horaApertura, mensaje);

Ejercicio 7, imprime el número mayor con el operador ternario(if-else corto)

const numeroMayor = (a, b) => {

return (a > b) ? a : b;

}

console.log(numeroMayor(7, 5));

Ejercicio 8, reducir el código del ejercicio 7

const numeroMayor = (a, b) => (a > b) ? a : b;

console.log(numeroMayor(7, 9));

Ejercicio 9, un programa que te diga si la persona es miembro o no con un valor booleano

const tieneMembresia = (miembro) => (miembro) ? '2usd' : "cobrele 10usd por puto";

console.log(tieneMembresia(true));

Ejercicio 10, crear un array que dentro tenga un if corto.

let compa = false;

const amigos = [

'Urrutia',

'fulano',

'sutano',

'mengano',

compa ? 'perengano' : "el capi"

];

console.log(amigos);

Ejercicio 11, imprimir la calificación usando el operador ternario(if-else corto)

let calificacion = 65;

const grado = calificacion >= 95 ? "A+" :

calificacion >= 90 ? "A" :

calificacion >= 85 ? "B+" :

calificacion >= 80 ? "B" :

calificacion >= 75 ? "C+" :

calificacion >= 70 ? "C" :

calificacion >= 65 ? "D+" :

calificacion >= 60 ? "D" : "F";

console.log(calificacion, grado);

Ejercicio 12 Manera distinta de hacer un IF-else

let saludo = (nombre) => {

if (nombre === undefined) { nombre = "visitante" }

return `Hola ${nombre}`;

}

console.log(saludo());

EJERCICIO 13 Un programa con if que te salude dependiendo la hora

let hora = "q";

if (hora < 12 && hora >= 5) {

console.log("BUenos días!");

} else if (hora >= 12 && hora < 19) {

console.log("BUenas tardes!");

} else if (hora >= 19 && hora <= 24 || hora < 5 && hora > 0) {

console.log("BUenas noches!");

} else {

console.log("Hora no valida");

}

EJERCICIO 14Cuando las 2 opciones son ciertas, se ejecuta la primera solamente

let puntaje = 100;

if (puntaje > 50) {

console.log("el puntaje es mayor a 50");

} else if (puntaje > 75) {

console.log("el puntaje es mayor a 75");

}

EJERCICIO 15 Checa si puedes pagar en efecto ó efectivo + crédito o no puedes pagarlo utilizando if

let efectivo = 300;

let credito = 300;

let pago = 200;

let total = efectivo + credito;

let cambio0 = efectivo - pago;

let cambio = (efectivo + credito) - pago;

if (efectivo >= pago) {

console.log(`Puedo pagar y me sobra de cambio en efectivo ${cambio0}`);

} else if (efectivo < pago && total >= pago) {

console.log(`No me alcanza, usaré crédito y me sobran ${cambio} de crédito`);

} else if (pago > total) {

console.log("No puedo comprarlo =/");

} else {

console.log("Dato no valido");

}

EJERCICIO 16 Ejercicio con if-corto

let logueado = true;

console.log(logueado === true ? "SI se logueo" : "NO se logueo");

EJERCICIO 17: Cualquier edad puede entrar menos 18

let edad = 17;

if (edad != 18) {

console.log("Puede entrar");

} else {

console.log("NO Puede entrar!");

}

EJERCICIO 18: Comparar las cantidades y decidir si puedes pagar o no

let efectivo = 500;

let carritoCompras = 300;

if (efectivo > carritoCompras) {

console.log("Puedes pagar");

} else {

console.log("Te falt dinero para la compra");

}

EJERCICIO 19: Resumir el código del ejercicio 22 NO SE RECOMIENDA ESTA SINTAXIS

let efectivo = 500;

let carritoCompras = 300;

if (efectivo > carritoCompras)

console.log("Puedes pagar");

else

console.log("Te falt dinero para la compra");

EJERCICIO 20: Ejericio scope global y bloque(dentro de un if)

var a = 'a';

let b = 'b';

const c = 'c';

if (true) {

var a = 'AA';

let b = 'BB';

const c = 'CC';

console.log('BLOQUE: ', a, b, c);

}

console.log('GLOBALES: ', a, b, c);

Ejercicio 1

Imprimir mi nombre con una función flecha

let nombre = () => {

console.log("Ricardo");

}

nombre();

Ejercicio 2

Imprimir mi nombre en una función flecha, asignandole el nombre en los parentesis

let nombre = (nombre1) => {

console.log(nombre1);

}

nombre("Ricardo");

Ejercicio 3

Imprimir mi nombre en una función flecha, asignandole el nombre en los parentesis

let operacion = (num1, num2) => {

console.log(num1 + num2);

}

Ejercicio 4

Hace una suma de 2 números asignandoselos en el parentesis, con una función flecha PERO usando return

let operacion = (num1, num2) => {

return num1 + num2;

}

console.log(operacion(2, 3));

Ejercicio 5

Hace una suma de 2 números asignandoselos en el parentesis, con una función flecha PERO resumiendo la sintaxis

let operacion = (num1, num2) => num1 + num2;

console.log(operacion(2, 3));

Ejercicio 6

Toda función devuelve "UNDIFINED", porque todas las funciones tienen un "return aunque no este escrito" cuando se tiene una función y no tiene un return "específico", devolverá "undifined"

let nombre = (nombre) => {

console.log(nombre);

return 1000;

}

const almacen = nombre("Ricardo");

console.log(almacen);

Ejercicio 7

Regresar 2 valores en un return, primero la manera mala y luego la buena

MALA

let nombre = (nombre) => {

console.log(nombre);

return 1, 2;

}

const almacen = nombre("Ricardo");

console.log(almacen);

BUENA(volverlo un array)

let nombre = (nombre) => {

console.log(nombre);

return [1, 2];

}

const almacen = nombre("Ricardo");

console.log(almacen[0], almacen[1]);

Ejercicio 8

Crea una función con un número aleatorio del 0 al 1, con funciones flechas y resumidas

let numero = () => Math.random();

console.log(numero());

Ejercicio 9

Crear una funcion flecha con "return" que retorne un objeto y luego resume ese objeto

const persona = (nombre, apellido) => {

return {

nombre: nombre,

apellido: apellido

}

}

const caja = persona('Ricardo', 'Garrido');

console.log(caja);

RESUMIDA

const persona = (nombre, apellido) =>

({ nombre, apellido })

const caja = persona('Ricardo', 'Garrido');

console.log(caja);

Ejercicio 10 PROTIP

Crear una función con parametros REST, el argumento rest no puede llevar nada despues de el, solo antes

let persona = (nombre, ...args) => {

return [nombre, args];

}

console.log(persona("Ricardo", true, 32, ["Perro", "Canada"]));

Ejercicio 11 PROTIP

Deestructuración: sirve para darle nombres a los valores que tiene un arreglo, en vez de crear una variable por cada posicion del arreglo. Ejemplo

let persona = (...args) => {

return args;

}

const [nombre, soltero, edad, aficiones] = persona("Ricardo", true, 32, ["Perro", "Canada"]);

console.log(aficiones);

Ejercicio 12 PROTIP

Deestructuración con un objeto RESUMIDO

const persona = (nombre, apellido) =>

({ nombre, apellido })

const { nombre: nombreNuevo } = persona('Ricardo', 'Garrido');

console.log({ nombreNuevo });

Ejercicio 13 PROTIP

Destructuración con un objeto resumido, cambiandole el nombre a la propiedad del objeto

const persona = (nombre, apellido) =>

({ nombre, apellido })

const { nombre: nombreNuevo } = persona('Ricardo', 'Garrido');

console.log({ nombreNuevo });

Ejercicio 14 PROTIP

Reestructuracion de argumentos en un objeto cuando hace falta un valor.

MANERA 1

const persona = {

nombre: 'Ricardo',

apellido: 'Garrido',

//edad: 32,

hobbies: ['ver series', 'no hace nada']

}

const imprimirPropiedades = ({ nombre, apellido, edad, hobbies }) => {

edad = edad || 0;

console.log({ nombre });

console.log({ apellido });

console.log({ edad });

console.log({ hobbies });

}

imprimirPropiedades(persona);

Manera 2 (esto se le llama "asignarle un valor por defecto", es la más viable)

const persona = {

nombre: 'Ricardo',

apellido: 'Garrido',

//edad: 32,

hobbies: ['ver series', 'no hace nada']

}

const imprimirPropiedades = ({ nombre, apellido, edad = 32, hobbies }) => {

console.log({ nombre });

console.log({ apellido });

console.log({ edad });

console.log({ hobbies });

}

imprimirPropiedades(persona);

Ejercicio 15: Cuantos caracteres tiene un array

const nombres = ['Carlos', 'Alejandro', 'Manuel', 'Cesar'];

const numero_caracteres = nombres.map((nombre) => {

console.log(`${nombre} tiene ${nombre.length} letras`);

})

Ejercicio 16:resumir el ejercicio 15

const nombres = ['Carlos', 'Alejandro', 'Manuel', 'Cesar'];

const numero_caracteres = nombres.map(nombre => `${nombre} tiene ${nombre.length} letras`)

Ejercicio 17

Crea una función con una variable por default si alguna vez alguien no rellena el dato

let saludar = (nombre = "visitante") => {

return `Hola ${nombre}`;

}

console.log(saludar("Sutano"));

Ejercicio 18:Crea una funcion dentro del valor de un objeto y usala

let saludar = {

accion: function saludar(a) {

return `Hola ${a}`;

},

otraAccion: function hablar(b) {

return `${b}`;

}

}

console.log(saludar.otraAccion("Blablabla"));

Ejercicio 19:Hacer una función que cree un objeto

let crearObjeto = (nombre, edad) => {

return {

name: nombre,

age: edad

};

}

console.log(crearObjeto("Ric", 33));

Ejercicio 20:Resumir el codigo del ejercicio 26

let crearObjeto = (nombre, edad) => {

return {

nombre,

edad

};

}

console.log(crearObjeto("Ric", 33));

Ejercicio 21:Agregar una funcion dentro del objeto del ejercicio 26 y ejecutarla

let crearObjeto = (nombre, edad) => {

return {

nombre,

edad,

imprimir: () => {

return `My name is ${nombre} y tengo ${edad}`;

}

};

}

console.log(crearObjeto("Ric", 33).imprimir());

Ejercicio 22

let crearObjeto = (nombre, edad) => {

return {

nombre,

edad,

imprimir() {

return `My name is ${nombre} y tengo ${edad}`;

}

};

}

console.log(crearObjeto("Ric", 33).imprimir());

Ejercicio 23: try catch cuando no quieres que se detenga la ejecución de tu programa

Usalo cuando las funciones no sabes si vayan a tener datos, si llegan vacias, no llenes tu codigo de try catch

Normalmente se usa cuando descargas un listado de clientes, NO LO USES para agregar una clase o algo en el html

Esto solo se puede con las funciones antiguas de JS, con las flechas primero se declara la funcion.

try {

algo();

} catch (error) {

console.log(error);

}

clientes();

function clientes() {

console.log("Descargando...");

setTimeout(() => {

console.log("Completado!");

}, 3000);

}

Ejercicio 24: TRY-CATCH-FINALLY Finally ejecuta pase lo que pase

try {

clientes();

} catch (error) {

console.log(error);

} finally {

console.log("Ejecuta esto pase lo que pase");

}

function clientes() {

console.log("Descargando...");

setTimeout(() => {

console.log("Completado!");

}, 3000);

}

Ejercicio 25:Escribe un objeto como se hacía de antaño.

function animal(nombre, genero) {

//Propiedades

this.nombre = nombre;

this.genero = genero;

//Metodos

this.sonar = function() {

console.log("Hago sonidos porque estoy vivo");

}

}

const snoopy = new animal("Snoopy", "Macho");

const lolaBunny = new animal("Lola Bunny", "Hembra");

console.log(snoopy);

Ejercicio 26: Agrega un metodo a un objeto de antaño usando prototype.

function animal(nombre, genero) {

//Propiedades

this.nombre = nombre;

this.genero = genero;

}

//Metodos agregados desde afuera, esto evita la duplicidad de metodos

animal.prototype.sonar = function() {

console.log("Hago sonidos porque estoy vivo");

}

const snoopy = new animal("Snoopy", "Macho");

const lolaBunny = new animal("Lola Bunny", "Hembra");

lolaBunny.sonar();

Ejercicio 27:Heredar prototipos

function animal(nombre, genero) {

//Propiedades

this.nombre = nombre;

this.genero = genero;

}

Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

animal.prototype.sonar = function() {

console.log("Hago sonidos porque estoy vivo");

}

function perro(nombre, genero, tamanio) {

//super sirve para invocar al constructor padre

this.super = animal;

this.super(nombre, genero);

this.tamanio = tamanio;

}

perro.prototype = new animal();

perro.prototype.constructor = perro;

al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro

incluso los prototipos, como el .sonar que tiene

Ejercicio 28: Sobreescribir, un prototipo heredado, (recuerda que esto es javascript viejito)

function animal(nombre, genero) {

//Propiedades

this.nombre = nombre;

this.genero = genero;

}

//Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

animal.prototype.sonar = function() {

console.log("Hago sonidos porque estoy vivo");

}

function perro(nombre, genero, tamanio) {

//super sirve para invocar al constructor padre

this.super = animal;

this.super(nombre, genero);

this.tamanio = tamanio;

}

perro.prototype = new animal();

perro.prototype.constructor = perro;

al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro

incluso los prototipos, como el .sonar que tiene

perro.prototype.sonar = function() {

console.log("Wof!! wof!!");

}

perro.prototype.sonar();

Ejercicio 29: Escribirle un metodo prototipado a la función heredada del javascript viejito

function animal(nombre, genero) {

Propiedades

this.nombre = nombre;

this.genero = genero;

}

Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

animal.prototype.sonar = function() {

console.log("Hago sonidos porque estoy vivo");

}

function perro(nombre, genero, tamanio) {

//super sirve para invocar al constructor padre

this.super = animal;

this.super(nombre, genero);

this.tamanio = tamanio;

}

perro.prototype = new animal();

perro.prototype.constructor = perro;

al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro

incluso los prototipos, como el .sonar que tiene

perro.prototype.ladrar = function() {

console.log("Wof!! wof!!");

}

perro.prototype.ladrar();

EJERCICIO 30: Crear una funcion anónima autoinvocada

(function() {

console.log("Soy una función autoinvocada");

})()

Ejercicio 31: Crear una funcion anónima autoinvocada que reciba parametros

(function(w, d, c) {

console.log("Soy una función autoinvocada");

console.log(w);

console.log(d);

console.log(c);

c.log("Estoy usando console.log recibiendo el console como un parametro");

})(window, document, console)

Ejercicio 32: Crear las 4 funciones anónimas autoinvocadas

//clasica

(function() {

console.log("Soy una función anónima autoejecutable CLASICA");

})();

//Crockford

((function() {

console.log("Soy una función anónima autoejecutable CROCKFORD");

})());

//UNARIA

+function() {

console.log("Soy una función anónima autoejecutable UNARIA");

}();

//FACEBOOk

!function() {

console.log("Soy una función anónima autoejecutable ESTILO FACEBOOK");

}

Ejercicio 1 : Array que tenga strings

let animales = ['Perro', 'Gato', 'Pez'];

console.log(animales[2]);

Ejercicio 1.01: Array creado de una forma nueva

let cadena = Array.of("hola", 2, true, [1, 2, "mundo"]);

console.log(cadena);

Ejercicio 1.02: Una forma de llenar un array de datos

let cadena = Array(10).fill(false);

console.log(cadena);

Ejercicio 1.03: Otra forma de crear un arreglo.

const e = new Array();

console.log(e);

Ejercicio 1.04: Imprimir un arreglo usando el metodo .forEach();

let colores = ["Azul", "Rojo", "Verde"];

colores.forEach(function(element, index) {

console.log(`

  • ${element}
  • `);

    });

    Ejercicio 2: Array que tenga strings y números

    let datos = [19, 'Gato', 22];

    console.log(datos[0]);

    Ejercicio 3: Array que tenga strings, números y boleanos

    let datos = [19, 'Gato', true];

    console.log(datos[2]);

    Ejercicio 4: Array que tenga strings, números, boleanos y nulos

    let datos = [19, 'Gato', true, null];

    console.log(datos[3]);

    Ejercicio 5: Array que tenga strings, números, boleanos, nulos y funciones

    let datos = [19, 'Gato', true, null, function name() {}];

    console.log(datos[4]);

    Ejercicio 6: Array que tenga strings, números, boleanos, nulos, funciones y un array con datos anteriores

    let datos = [19,

    'Gato',

    true,

    null,

    function name() {},

    ["Canada", "Suiza", "Germany"]

    ];

    console.log(datos[5][1]);

    Ejercicio 7: Usa el metodo "length" que te dice cuantos cupos hay en el array

    let mascotas = ["perro", "gato", "perico"];

    console.log(mascotas.length);

    Ejercicio 8 Usa el metodo .push() que te agrega un nuevo dato a tu array al final(agrega un objeto de preferencia)

    let mascotas = ["perro", "gato", "perico"];

    mascotas.push("Pez");

    console.log(mascotas.length);

    console.log(mascotas);

    Ejercicio 9 Usa el metodo unshift(); que te agrega un nuevo dato a tu array pero al inicio

    let mascotas = ["perro", "gato", "perico"];

    mascotas.unshift("Caracol");

    console.log(mascotas.length);

    console.log(mascotas);

    Ejercicio 10 Borrar el último dato de tu array y muestra lo que hayas borrado

    let mascotas = ["perro", "gato", "perico"];

    let borrado = mascotas.pop();

    console.log(mascotas.length);

    console.log(mascotas);

    console.log("La mascota que se borro fue: " + borrado);

    Ejercicios 11 Elimina el rango de elementos que tu le digas, dentro de un array

    let mascotas = ["perro", "gato", "perico", "pez", "hamster", "mapache"];

    let elementosBorrados = mascotas.splice(1, 4);

    console.log(mascotas.length);

    console.log(mascotas);

    console.log(elementosBorrados);

    Ejercicio 12 Te dice el lugar en donde se encuentra el dato que buscas, OJO: debes ponerlo exacto, mayúsculas y minúsculas

    let mascotas = ["perro", "gato", "perico", "pez", "hamster", "mapache"];

    let indice = mascotas.indexOf("pez");

    console.log(indice);

    Ejercicio 13 Crear un objeto con diferentes tipos de datos y mostrar su contenido

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    console.log(persona.otrosAmigos.unila[1]);

    Ejercicio 13.01: Crear un objeto e inicializar un metodo interior que tenga

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    }

    }

    ric.accion();

    Ejercicio 13.02: crear un objeto e imprime una datos que estén dentro usando THIS

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    ric.otraAccion();

    EJERCICIO 13.03: Obtener los nombres de las propiedades del objeto

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    console.log(Object.keys(ric));

    EJERCICIO 13.04: Obtener los valores de las propiedades del objeto

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    console.log(Object.values(ric));

    EJERCICIO 13.05: Usar el metodo .hasOwnProperty para preguntar si existe una propiedad del metodo, imprimira true or false para decirte si existe o no

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    console.log(ric.hasOwnProperty("nombre"));

    Ejercicio 14 Crear un objeto y mostrar su contenido Y BORRAR una propiedad del objeto ,Crear un objeto y mostrar su contenido

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    delete persona.vivo;

    console.log(persona);

    Ejercicio 15 Convertir todo un objeto en un array

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    delete persona.vivo;

    const entriesPares = Object.entries(persona);

    console.log(entriesPares);

    Ejercicio 16 Agregar una nueva propiedad al objeto

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    persona.casado = false;

    console.log(persona);

    Ejercicio 17 Crea un objeto y bloquea una modificación usando el metodo Object.freeze, que sirve para congelar tu objeto y se quede como lo dejaste

    const persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    Object.freeze(persona);

    Object.freeze(persona.amigos);

    persona.amigos[0] = "Andres";

    persona.edad = 18;

    console.log(persona);

    Ejercicio 18 Usa el metodo Object.getOwnPropertyNames(); que te muestra las propiedades que le pusiste a tu objeto, pero en un Array

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    const propiedades = Object.getOwnPropertyNames(persona);

    console.log(propiedades);

    Ejercicio 19 Muestra en un array los valores que tengas dentro de las propiedades que están dentro de tu objeto, usando Object.value()

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    const valores = Object.values(persona);

    console.log(valores);

    Ejercicio 20 Imprimir los objetos dentro de un array usando For

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    for (let i = 0; i < autos.length; i++) {

    console.log(autos[i]);

    }

    EJERCICIO 21 Imprimir los objetos dentro del array con for pero imprimiendo nombre y modelo

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    for (let i = 0; i < autos.length; i++) {

    console.log(autos[i].modelo + ' del año ' + autos[i].anio);

    }

    EJERCICIO 22 Hacer el ejercicio 30 pero imprimiendo con interpolacion

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    for (let i = 0; i < autos.length; i++) {

    console.log(`${autos[i].modelo} del año ${autos[i].anio}`);

    }

    Ejercicio 23 Agregaga un objeto a un array const e imprimelo

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    autos.push({ modelo: "Mercedez Benz", anio: 2016 });

    for (let i = 0; i < autos.length; i++) {

    console.log(autos[i].modelo + 'del año' + autos[i].anio);

    }

    EJERCICIO 24 Modifica objeto dentro de un array const desde afuera(es la unica manera en la que se puede).

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    autos[1].modelo = "Mercedez Benz";

    console.log(autos[1].modelo);

    Ejercicio 1

    ANTES

    function primero() {

    console.log("PRIMERO");

    }

    function segundo() {

    console.log("SEGUNDO");

    }

    primero();

    segundo();

    EL ERROR(Por el retrazo de tiempo, se ejecuta después aunque vaya antes)

    function primero() {

    setTimeout(function() {

    console.log("PRIMERO");

    }, 3000)

    }

    function segundo() {

    console.log("SEGUNDO");

    }

    primero(segundo);

    DESPUES(La solución)

    function primero(segundo) {

    setTimeout(function() {

    console.log("PRIMERO");

    segundo();

    }, 3000)

    }

    function segundo() {

    console.log("SEGUNDO");

    }

    primero(segundo);

    what is the difference between var, let and const?

    conts const is use to create constans, constans no change. Although(altau) you could modify the value of a constant, if it contains an object.

    var add one variable to window’s global object.

    letdeclares a locally scoped variable with block scope. You can change the value of the variable by declaring the variable name without using let

    1. Sintácticamente más cortas que las expresiones convencionales
    2. Las arrow function no vinculan sus propios this, arguments, etc…
    3. Siempre son tratadas como funciones anónimas
    4. Y no son relacionadas con los métodos, por lo que tampoco pueden ser usadas como constructores.
    5. Las funciones flecha, se utilizan siempre que se requiera una función anónima, ya que esta es una de sus cualidades
    6. Su sintaxis es mas corta y orientada mas a un estilo de programación funcional
    7. El uso de this ya no queda vinculado al contexto de la función como sucedía antes sino vinculado al contexto de donde existe la propia arrow function
    8. Una función anónima no puede ser invocada antes de ser creada

      console.log(app)//aquí no existe app

      let app = () => {

      console.log('Hola')

      }

      app()//aqui si existe app

    9. A diferencia de una función tradicional nombrada que puede ser invocada incluso antes de ser creada

      hola() //aqui si existe app

      function hola(){

      console.log('hola')

      }

      hola()//aqui si existe app

    10. Las arrow functions fueron creadas para simplificar el scope de las funciones y hacer uso de la palabra reservada this de una manera más clara. Ejemplo:

      const persona = {

      nombre: 'Agustin',

      decirNombre(){

      console.log(this.name)

      }

      }

      console.log(persona.decirNombre()) // OUTPUT : 'Agustin'

    11. Como esperabamos... nada raro. Ahora probemos lo mismo pero con una funcion flecha:

      const persona = {

      nombre: 'Agustin',

      decirNombre(){

      console.log(this.name)

      }

      decirNombreFuncionFlecha: () => {

      console.log(this.nombre)

      }

      }

      persona.decirNombreFuncionFlecha(); // OUTPUT : undefined

      Lo que ocurre es que las arrow functions, a diferencia de las funciones regulares, no se les asigna un this propio sino que heredan el this del contexto superior, que estando dentro del contexto del objeto persona, this hace referencia al objeto window. Por lo tanto, la propiedad 'nombre' no esta definida en el objeto window, y recibimos el mensaje undefined

    Ejercicio 1

    Imprimir mi nombre con una función flecha

    let nombre = () => {

    console.log("Ricardo");

    }

    nombre();

    Ejercicio 2

    Imprimir mi nombre en una función flecha, asignandole el nombre en los parentesis

    let nombre = (nombre1) => {

    console.log(nombre1);

    }

    nombre("Ricardo");

    Ejercicio 3

    Imprimir mi nombre en una función flecha, asignandole el nombre en los parentesis

    let operacion = (num1, num2) => {

    console.log(num1 + num2);

    }

    Ejercicio 4

    Hace una suma de 2 números asignandoselos en el parentesis, con una función flecha PERO usando return

    let operacion = (num1, num2) => {

    return num1 + num2;

    }

    console.log(operacion(2, 3));

    Ejercicio 5

    Hace una suma de 2 números asignandoselos en el parentesis, con una función flecha PERO resumiendo la sintaxis

    let operacion = (num1, num2) => num1 + num2;

    console.log(operacion(2, 3));

    Ejercicio 6

    Toda función devuelve "UNDIFINED", porque todas las funciones tienen un "return aunque no este escrito" cuando se tiene una función y no tiene un return "específico", devolverá "undifined"

    let nombre = (nombre) => {

    console.log(nombre);

    return 1000;

    }

    const almacen = nombre("Ricardo");

    console.log(almacen);

    Ejercicio 7

    Regresar 2 valores en un return, primero la manera mala y luego la buena

    MALA

    let nombre = (nombre) => {

    console.log(nombre);

    return 1, 2;

    }

    const almacen = nombre("Ricardo");

    console.log(almacen);

    BUENA(volverlo un array)

    let nombre = (nombre) => {

    console.log(nombre);

    return [1, 2];

    }

    const almacen = nombre("Ricardo");

    console.log(almacen[0], almacen[1]);

    Ejercicio 8

    Crea una función con un número aleatorio del 0 al 1, con funciones flechas y resumidas

    let numero = () => Math.random();

    console.log(numero());

    Ejercicio 9

    Crear una funcion flecha con "return" que retorne un objeto y luego resume ese objeto

    const persona = (nombre, apellido) => {

    return {

    nombre: nombre,

    apellido: apellido

    }

    }

    const caja = persona('Ricardo', 'Garrido');

    console.log(caja);

    RESUMIDA

    const persona = (nombre, apellido) =>

    ({ nombre, apellido })

    const caja = persona('Ricardo', 'Garrido');

    console.log(caja);

    Ejercicio 10 PROTIP

    Crear una función con parametros REST, el argumento rest no puede llevar nada despues de el, solo antes

    let persona = (nombre, ...args) => {

    return [nombre, args];

    }

    console.log(persona("Ricardo", true, 32, ["Perro", "Canada"]));

    Ejercicio 11 PROTIP

    Deestructuración: sirve para darle nombres a los valores que tiene un arreglo, en vez de crear una variable por cada posicion del arreglo. Ejemplo

    let persona = (...args) => {

    return args;

    }

    const [nombre, soltero, edad, aficiones] = persona("Ricardo", true, 32, ["Perro", "Canada"]);

    console.log(aficiones);

    Ejercicio 12 PROTIP

    Deestructuración con un objeto RESUMIDO

    const persona = (nombre, apellido) =>

    ({ nombre, apellido })

    const { nombre: nombreNuevo } = persona('Ricardo', 'Garrido');

    console.log({ nombreNuevo });

    Ejercicio 13 PROTIP

    Destructuración con un objeto resumido, cambiandole el nombre a la propiedad del objeto

    const persona = (nombre, apellido) =>

    ({ nombre, apellido })

    const { nombre: nombreNuevo } = persona('Ricardo', 'Garrido');

    console.log({ nombreNuevo });

    Ejercicio 14 PROTIP

    Reestructuracion de argumentos en un objeto cuando hace falta un valor.

    MANERA 1

    const persona = {

    nombre: 'Ricardo',

    apellido: 'Garrido',

    //edad: 32,

    hobbies: ['ver series', 'no hace nada']

    }

    const imprimirPropiedades = ({ nombre, apellido, edad, hobbies }) => {

    edad = edad || 0;

    console.log({ nombre });

    console.log({ apellido });

    console.log({ edad });

    console.log({ hobbies });

    }

    imprimirPropiedades(persona);

    Manera 2 (esto se le llama "asignarle un valor por defecto", es la más viable)

    const persona = {

    nombre: 'Ricardo',

    apellido: 'Garrido',

    //edad: 32,

    hobbies: ['ver series', 'no hace nada']

    }

    const imprimirPropiedades = ({ nombre, apellido, edad = 32, hobbies }) => {

    console.log({ nombre });

    console.log({ apellido });

    console.log({ edad });

    console.log({ hobbies });

    }

    imprimirPropiedades(persona);

    Ejercicio 15: Cuantos caracteres tiene un array

    const nombres = ['Carlos', 'Alejandro', 'Manuel', 'Cesar'];

    const numero_caracteres = nombres.map((nombre) => {

    console.log(`${nombre} tiene ${nombre.length} letras`);

    })

    Ejercicio 16:resumir el ejercicio 15

    const nombres = ['Carlos', 'Alejandro', 'Manuel', 'Cesar'];

    const numero_caracteres = nombres.map(nombre => `${nombre} tiene ${nombre.length} letras`)

    Ejercicio 17

    Crea una función con una variable por default si alguna vez alguien no rellena el dato

    let saludar = (nombre = "visitante") => {

    return `Hola ${nombre}`;

    }

    console.log(saludar("Sutano"));

    Ejercicio 18:Crea una funcion dentro del valor de un objeto y usala

    let saludar = {

    accion: function saludar(a) {

    return `Hola ${a}`;

    },

    otraAccion: function hablar(b) {

    return `${b}`;

    }

    }

    console.log(saludar.otraAccion("Blablabla"));

    Ejercicio 19:Hacer una función que cree un objeto

    let crearObjeto = (nombre, edad) => {

    return {

    name: nombre,

    age: edad

    };

    }

    console.log(crearObjeto("Ric", 33));

    Ejercicio 20:Resumir el codigo del ejercicio 26

    let crearObjeto = (nombre, edad) => {

    return {

    nombre,

    edad

    };

    }

    console.log(crearObjeto("Ric", 33));

    Ejercicio 21:Agregar una funcion dentro del objeto del ejercicio 26 y ejecutarla

    let crearObjeto = (nombre, edad) => {

    return {

    nombre,

    edad,

    imprimir: () => {

    return `My name is ${nombre} y tengo ${edad}`;

    }

    };

    }

    console.log(crearObjeto("Ric", 33).imprimir());

    Ejercicio 22

    let crearObjeto = (nombre, edad) => {

    return {

    nombre,

    edad,

    imprimir() {

    return `My name is ${nombre} y tengo ${edad}`;

    }

    };

    }

    console.log(crearObjeto("Ric", 33).imprimir());

    Ejercicio 23: try catch cuando no quieres que se detenga la ejecución de tu programa

    Usalo cuando las funciones no sabes si vayan a tener datos, si llegan vacias, no llenes tu codigo de try catch

    Normalmente se usa cuando descargas un listado de clientes, NO LO USES para agregar una clase o algo en el html

    Esto solo se puede con las funciones antiguas de JS, con las flechas primero se declara la funcion.

    try {

    algo();

    } catch (error) {

    console.log(error);

    }

    clientes();

    function clientes() {

    console.log("Descargando...");

    setTimeout(() => {

    console.log("Completado!");

    }, 3000);

    }

    Ejercicio 24: TRY-CATCH-FINALLY Finally ejecuta pase lo que pase

    try {

    clientes();

    } catch (error) {

    console.log(error);

    } finally {

    console.log("Ejecuta esto pase lo que pase");

    }

    function clientes() {

    console.log("Descargando...");

    setTimeout(() => {

    console.log("Completado!");

    }, 3000);

    }

    Ejercicio 25:Escribe un objeto como se hacía de antaño.

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    //Metodos

    this.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    console.log(snoopy);

    Ejercicio 26: Agrega un metodo a un objeto de antaño usando prototype.

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos agregados desde afuera, esto evita la duplicidad de metodos

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    const snoopy = new animal("Snoopy", "Macho");

    const lolaBunny = new animal("Lola Bunny", "Hembra");

    lolaBunny.sonar();

    Ejercicio 27:Heredar prototipos

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    function perro(nombre, genero, tamanio) {

    //super sirve para invocar al constructor padre

    this.super = animal;

    this.super(nombre, genero);

    this.tamanio = tamanio;

    }

    perro.prototype = new animal();

    perro.prototype.constructor = perro;

    al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro

    incluso los prototipos, como el .sonar que tiene

    Ejercicio 28: Sobreescribir, un prototipo heredado, (recuerda que esto es javascript viejito)

    function animal(nombre, genero) {

    //Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    //Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    function perro(nombre, genero, tamanio) {

    //super sirve para invocar al constructor padre

    this.super = animal;

    this.super(nombre, genero);

    this.tamanio = tamanio;

    }

    perro.prototype = new animal();

    perro.prototype.constructor = perro;

    al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro

    incluso los prototipos, como el .sonar que tiene

    perro.prototype.sonar = function() {

    console.log("Wof!! wof!!");

    }

    perro.prototype.sonar();

    Ejercicio 29: Escribirle un metodo prototipado a la función heredada del javascript viejito

    function animal(nombre, genero) {

    Propiedades

    this.nombre = nombre;

    this.genero = genero;

    }

    Metodos agregados desde afuera, esto evita la duplicidad de metodos en la función constructora

    animal.prototype.sonar = function() {

    console.log("Hago sonidos porque estoy vivo");

    }

    function perro(nombre, genero, tamanio) {

    //super sirve para invocar al constructor padre

    this.super = animal;

    this.super(nombre, genero);

    this.tamanio = tamanio;

    }

    perro.prototype = new animal();

    perro.prototype.constructor = perro;

    al igualarlo al mismo constructor, obtendra todo lo que hay en la funcion perro

    incluso los prototipos, como el .sonar que tiene

    perro.prototype.ladrar = function() {

    console.log("Wof!! wof!!");

    }

    perro.prototype.ladrar();

    EJERCICIO 30: Crear una funcion anónima autoinvocada

    (function() {

    console.log("Soy una función autoinvocada");

    })()

    Ejercicio 31: Crear una funcion anónima autoinvocada que reciba parametros

    (function(w, d, c) {

    console.log("Soy una función autoinvocada");

    console.log(w);

    console.log(d);

    console.log(c);

    c.log("Estoy usando console.log recibiendo el console como un parametro");

    })(window, document, console)

    Ejercicio 32: Crear las 4 funciones anónimas autoinvocadas

    //clasica

    (function() {

    console.log("Soy una función anónima autoejecutable CLASICA");

    })();

    //Crockford

    ((function() {

    console.log("Soy una función anónima autoejecutable CROCKFORD");

    })());

    //UNARIA

    +function() {

    console.log("Soy una función anónima autoejecutable UNARIA");

    }();

    //FACEBOOk

    !function() {

    console.log("Soy una función anónima autoejecutable ESTILO FACEBOOK");

    }

    Ejercicio 1 : Array que tenga strings

    let animales = ['Perro', 'Gato', 'Pez'];

    console.log(animales[2]);

    Ejercicio 1.01: Array creado de una forma nueva

    let cadena = Array.of("hola", 2, true, [1, 2, "mundo"]);

    console.log(cadena);

    Ejercicio 1.02: Una forma de llenar un array de datos

    let cadena = Array(10).fill(false);

    console.log(cadena);

    Ejercicio 1.03: Otra forma de crear un arreglo.

    const e = new Array();

    console.log(e);

    Ejercicio 1.04: Imprimir un arreglo usando el metodo .forEach();

    let colores = ["Azul", "Rojo", "Verde"];

    colores.forEach(function(element, index) {

    console.log(`

  • ${element}
  • `);

    });

    Ejercicio 2: Array que tenga strings y números

    let datos = [19, 'Gato', 22];

    console.log(datos[0]);

    Ejercicio 3: Array que tenga strings, números y boleanos

    let datos = [19, 'Gato', true];

    console.log(datos[2]);

    Ejercicio 4: Array que tenga strings, números, boleanos y nulos

    let datos = [19, 'Gato', true, null];

    console.log(datos[3]);

    Ejercicio 5: Array que tenga strings, números, boleanos, nulos y funciones

    let datos = [19, 'Gato', true, null, function name() {}];

    console.log(datos[4]);

    Ejercicio 6: Array que tenga strings, números, boleanos, nulos, funciones y un array con datos anteriores

    let datos = [19,

    'Gato',

    true,

    null,

    function name() {},

    ["Canada", "Suiza", "Germany"]

    ];

    console.log(datos[5][1]);

    Ejercicio 7: Usa el metodo "length" que te dice cuantos cupos hay en el array

    let mascotas = ["perro", "gato", "perico"];

    console.log(mascotas.length);

    Ejercicio 8 Usa el metodo .push() que te agrega un nuevo dato a tu array al final(agrega un objeto de preferencia)

    let mascotas = ["perro", "gato", "perico"];

    mascotas.push("Pez");

    console.log(mascotas.length);

    console.log(mascotas);

    Ejercicio 9 Usa el metodo unshift(); que te agrega un nuevo dato a tu array pero al inicio

    let mascotas = ["perro", "gato", "perico"];

    mascotas.unshift("Caracol");

    console.log(mascotas.length);

    console.log(mascotas);

    Ejercicio 10 Borrar el último dato de tu array y muestra lo que hayas borrado

    let mascotas = ["perro", "gato", "perico"];

    let borrado = mascotas.pop();

    console.log(mascotas.length);

    console.log(mascotas);

    console.log("La mascota que se borro fue: " + borrado);

    Ejercicios 11 Elimina el rango de elementos que tu le digas, dentro de un array

    let mascotas = ["perro", "gato", "perico", "pez", "hamster", "mapache"];

    let elementosBorrados = mascotas.splice(1, 4);

    console.log(mascotas.length);

    console.log(mascotas);

    console.log(elementosBorrados);

    Ejercicio 12 Te dice el lugar en donde se encuentra el dato que buscas, OJO: debes ponerlo exacto, mayúsculas y minúsculas

    let mascotas = ["perro", "gato", "perico", "pez", "hamster", "mapache"];

    let indice = mascotas.indexOf("pez");

    console.log(indice);

    Ejercicio 13 Crear un objeto con diferentes tipos de datos y mostrar su contenido

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    console.log(persona.otrosAmigos.unila[1]);

    Ejercicio 13.01: Crear un objeto e inicializar un metodo interior que tenga

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    }

    }

    ric.accion();

    Ejercicio 13.02: crear un objeto e imprime una datos que estén dentro usando THIS

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    ric.otraAccion();

    EJERCICIO 13.03: Obtener los nombres de las propiedades del objeto

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    console.log(Object.keys(ric));

    EJERCICIO 13.04: Obtener los valores de las propiedades del objeto

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    console.log(Object.values(ric));

    EJERCICIO 13.05: Usar el metodo .hasOwnProperty para preguntar si existe una propiedad del metodo, imprimira true or false para decirte si existe o no

    let ric = {

    nombre: "Ricardo",

    edad: 33,

    redes: ["Twitter", "Instagram", "GitHub"],

    amigos: {

    secu: "Urrutia",

    prepa: "Nacho",

    uni: "Lau",

    vida: "Diego"

    },

    accion: function saludar() {

    console.log("Hello World");

    },

    otraAccion: function() {

    console.log(`MI nombre es ${this.nombre} y tengo ${this.edad} años`);

    }

    }

    console.log(ric.hasOwnProperty("nombre"));

    Ejercicio 14 Crear un objeto y mostrar su contenido Y BORRAR una propiedad del objeto ,Crear un objeto y mostrar su contenido

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    delete persona.vivo;

    console.log(persona);

    Ejercicio 15 Convertir todo un objeto en un array

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    delete persona.vivo;

    const entriesPares = Object.entries(persona);

    console.log(entriesPares);

    Ejercicio 16 Agregar una nueva propiedad al objeto

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    persona.casado = false;

    console.log(persona);

    Ejercicio 17 Crea un objeto y bloquea una modificación usando el metodo Object.freeze, que sirve para congelar tu objeto y se quede como lo dejaste

    const persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    Object.freeze(persona);

    Object.freeze(persona.amigos);

    persona.amigos[0] = "Andres";

    persona.edad = 18;

    console.log(persona);

    Ejercicio 18 Usa el metodo Object.getOwnPropertyNames(); que te muestra las propiedades que le pusiste a tu objeto, pero en un Array

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    const propiedades = Object.getOwnPropertyNames(persona);

    console.log(propiedades);

    Ejercicio 19 Muestra en un array los valores que tengas dentro de las propiedades que están dentro de tu objeto, usando Object.value()

    let persona = {

    nombre: "Ricardo",

    edad: 33,

    vivo: true,

    amigos: ["El capi",

    "Luis",

    "Nacho"

    ],

    otrosAmigos: {

    unila: ["Ruben",

    "Jessica"

    ],

    secu1: "Urrutia",

    uni: {

    elMorro: "Samuel",

    yuri: "Yuriliana",

    Laurrirrichan: "Laura"

    }

    }

    }

    const valores = Object.values(persona);

    console.log(valores);

    Ejercicio 20 Imprimir los objetos dentro de un array usando For

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    for (let i = 0; i < autos.length; i++) {

    console.log(autos[i]);

    }

    EJERCICIO 21 Imprimir los objetos dentro del array con for pero imprimiendo nombre y modelo

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    for (let i = 0; i < autos.length; i++) {

    console.log(autos[i].modelo + ' del año ' + autos[i].anio);

    }

    EJERCICIO 22 Hacer el ejercicio 30 pero imprimiendo con interpolacion

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    for (let i = 0; i < autos.length; i++) {

    console.log(`${autos[i].modelo} del año ${autos[i].anio}`);

    }

    Ejercicio 23 Agregaga un objeto a un array const e imprimelo

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    autos.push({ modelo: "Mercedez Benz", anio: 2016 });

    for (let i = 0; i < autos.length; i++) {

    console.log(autos[i].modelo + 'del año' + autos[i].anio);

    }

    EJERCICIO 24 Modifica objeto dentro de un array const desde afuera(es la unica manera en la que se puede).

    const autos = [

    { modelo: "Mustang", anio: 1962 },

    { modelo: "360z", anio: 2010 },

    { modelo: "Civic", anio: 2007 }

    ];

    autos[1].modelo = "Mercedez Benz";

    console.log(autos[1].modelo);

    Ejercicio 1

    ANTES

    function primero() {

    console.log("PRIMERO");

    }

    function segundo() {

    console.log("SEGUNDO");

    }

    primero();

    segundo();

    EL ERROR(Por el retrazo de tiempo, se ejecuta después aunque vaya antes)

    function primero() {

    setTimeout(function() {

    console.log("PRIMERO");

    }, 3000)

    }

    function segundo() {

    console.log("SEGUNDO");

    }

    primero(segundo);

    DESPUES(La solución)

    function primero(segundo) {

    setTimeout(function() {

    console.log("PRIMERO");

    segundo();

    }, 3000)

    }

    function segundo() {

    console.log("SEGUNDO");

    }

    primero(segundo);