07-Javascript Avanzado 2023
07-Javascript Avanzado 2023
JAVASCRIPT AVANZADO
"No desees que fuese más sencillo, desea que fuese mucho mejor.".
(Jim Rohn)
OBJETOS
Los programas que hemos creado hasta ahora se han visto limitados por el hecho de que solo
funcionaban con tipos de datos simples. Por ejemplo, vamos a suponer que queremos definir
el uso de una tarjeta de crédito dentro de un programa. Si definiera número de tarjeta de
crédito seria por ejemplo un tipo de dato simple como un String. Pero una tarjeta de crédito es
más que un número, tiene un tipo (Visa Classic, Mastercard Gold, etc), un banco emisor, la
fecha de emisión, etc.
Es decir, una tarjeta de crédito es un objeto con muchas propiedades que definen sus
características. Estas propiedades pueden contener cualquier tipo de datos, incluidas
números, strings y booleanos.
1
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
También como veremos más adelante pueden contener métodos, que son funciones
contenidas en un objeto. Para crear objetos, podemos hacerlo de varias maneras; nosotros
usaremos la notación más extendida que es la notación literal donde entre llaves ({})
indicaremos las propiedades y su valores con la forma: propiedad:valor separador por comas.
Por ejemplo, el siguiente código crea un objeto tarjeta de crédito:
let myCardCredit = {
cardNumber: '4111 1111 1111 1111',
lastName: 'Lopez',
type: 'Visa Classic'
};
El objeto myCardCredit tiene tres propiedades número de tarjeta, apellido y tipo cuyos valores
correspondientes son: '4111 1111 1111 1111', Lopez y 'Visa Classic'.
Para acceder a una propiedad de un objeto, se utiliza la notación punto ejemplo:
myCardCredit.cardNumber;
FUNCIONES ANONIMAS
let dogName=function() {
let name = prompt('Ingrese el Nombre de su Mascota');
alert(name);
};
En este caso guardamos a la función en una variable llamada dogName (El valor de la
variable es la función). Para invocarla necesitamos llamar al nombre de la variable.
dogName();
Normalmente estas funciones son usadas sólo una vez en nuestro código.
2
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
Anteriormente vimos que los objetos en JavaScript son grupos de pares clave-valor. Los
valores pueden consistir en propiedades, pero también de métodos. Los métodos son las
tareas que puede realizar un objeto. Veremos cómo podemos definir un objeto en JavaScript:
let soldierRome = {
name:'cesar',
weapon: 'Gladius',
fight: function() {
return this.name+ " ataca con su: "+ this.weapon;
}
};
alert(soldierRome.fight());
En este caso construimos un objeto Soldado Romano que usara su arma en un ataque. Para
ello armaremos un método que nos permitirá a nuestro soldado luchar. La palabra this usada
en nuestro método se refiere al objeto actual en el que se está escribiendo el código, por lo que
en este caso this es igual a Soldado Romano.
OBJETOS INTRINSECOS
JavaScript define algunos objetos de forma nativa, por lo que pueden ser utilizados
directamente por las aplicaciones sin tener que crearlos. Los objetos Boolean, Number, String
aparte de almacenar los mismos valores de los tipos de datos primitivos añaden propiedades
y métodos para manipular sus valores. Otros como los objetos Array y Date tienen una gran
cantidad de propiedades y métodos. Para poder usarlos se declaran con la palabra reservada
new y el nombre del objeto. Por ejemplo, supongamos que quiero obtener la fecha y la hora
actual generado por mi Sistema Operativo:
Definimos una variable denominada fecha. Esta variable contiene un objeto de tipo Date que
lo que hace es almacenar la fecha y la hora. Como fecha es un objeto podemos usar todas las
propiedades y métodos que provee este objeto.
Por ejemplo si usamos el método getDay() este nos devolverá el día actual. También puede
conseguir el año actual usando getFullYear().
Por ejemplo:
3
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
ESTRUCTURAS DE CONTROL
Hasta aquí hemos obtenidos programas que son una simple sucesión lineal de instrucciones.
Pero que sucede si nuestro programa debe tomar decisiones en base a una condición o si
necesitamos repetir una cierta cantidad de veces un conjunto de instrucciones. Para realizar
este tipo de programas son necesarias las estructuras de control de flujo, que son
instrucciones del tipo "si se cumple esta condición, hazlo; si no se cumple, haz esto otro".
También existen instrucciones del tipo "repite esto mientras se cumpla esta condición".
ESTRUCTURA IF
OPERADORES
En programación un operador se refiere a un carácter que le dice a la máquina que realice una
operación en particular. Por ejemplo, el operador (+) se usa para sumar dos valores
numéricos. Ahora veremos los operadores más usados:
OPERADORES DE COMPARACION
Un operador es un símbolo en una expresión que representa una operación aplicada a los
valores sobre los que actúa. Los valores sobre los que actúa un operador se llaman operandos.
Un operador binario es el que tiene dos operandos, mientras que un operador unario es el que
tiene sólo uno.
Los operadores de comparación devuelven un valor de tipo boolean (verdadero o falso) que
indica el resultado de la comparación. Algunos operadores de comparación son:
4
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
OPERADORES ARITMÉTICOS
Las operaciones aritméticas son las que operan sobre valores numéricos y entregan otro valor
numérico como resultado. Algunos operadores aritméticos son:
La suma +
La resta -
La multiplicación *
La división /
El módulo % (resto de la división);
Incremento en uno ++
Decremento en uno --
Los operadores booleanos o lógicos se utilizan para formar expresiones que sólo pueden tener,
como resultado, un valor booleano. Hay tres operadores lógicos:
ESTRUCTURA IF-ELSE
En ocasiones, las decisiones que se deben realizar son del tipo "si se cumple esta condición,
hazlo; si no se cumple, haz esto otro". Para este caso se debe crear otro bloque de instrucciones
en el caso de la condición sea falsa. Este bloque ira después de la palabra reservada else.
5
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
if(condición){
// instrucciones a ejecutar SI se cumple la condición
}
else
{
// instrucciones a ejecutar si NO se cumple la condición
}
Ahora desarrollaremos un pequeño ejemplo donde le pasamos el talle de una remera (S, M, L o
XL) y nos devuelve el color de la remera que tiene la tienda virtual:
function colorProduct(size){
// Solo talles: S, M, L Y XL.
let color;
if (size=="S")
color="Blanca";
else if (size=="M" || size=="L")
color="Negra";
else
color="Roja";
return color;
}
ESTRUCTURA FOR
Cuando se sabe a priori el número de veces que se tiene que repetir una operación o tarea se
utiliza la estructura for Esta estructura crea un bucle que ejecuta una o un conjunto de
instrucciones mientras cierta condición se evalúe como verdadera. Cuando la condición se
evalúa como false, la ejecución continúa con la sentencia posterior al bucle for.
Su estructura de control está compuesta de tres declaraciones:
6
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
const coloursRainbow = [
"Red",
"Orange",
"Yellow",
"Green",
"Blue",
"Indigo",
"Violet"
];
FOR EACH
JavaScript ha evolucionado mucho en los últimos años y con la llegada ES6 se ha potenciado
su uso. De la mano de estos cambios encontramos muchas novedades que facilitan nuestro
trabajo. Entre ello podemos encontrar el forEach(). El método forEach() es un método de los
arrays de JavaScript que se utiliza para iterar sobre los elementos del mismo y ejecutar una
función determinada en cada uno de ellos. La sintaxis es la siguiente:
arreglo.forEach(función_callback);
En donde la variable función_callback es una función denominada callback que será llamada
o invocada por cada elemento que exista dentro del arreglo. Por ejemplo, para el ejercicio que
realizamos en el for anterior podemos realizar lo siguiente:
7
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
const coloursRainbow = [
"Red",
"Orange",
"Yellow",
"Green",
"Blue",
"Indigo",
"Violet",
];
coloursRainbow.forEach(function (color) {
console.log(color);
});
);
En este caso aplicaremos el método forEach() llamando a una función callback que tiene un
argumento denominado color que contiene el elemento actual por donde se va iterando.
Ahora veamos cómo usar forEach en JavaScript pero combinado con las funciones flecha
(arrow function) De esta forma tendremos un código más corto y entendible:
const coloursRainbow = [
"Red",
"Orange",
"Yellow",
"Green",
"Blue",
"Indigo",
"Violet"
];
coloursRainbow.forEach(color=>console.log(color))
Nota
Como se puede ser un forEach() es mucho más fácil no solo de escribir sino
también es más fácil de leer el código.
8
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
ESTRUCTURA WHILE
while (condicion) {
instrucciones a ejecutar
}
Para usar esta estructura (a diferencia del for visto anteriormente) hay que tener en cuenta
que, en este tipo de estructura iterativa, la variable se tiene que inicializar fuera del bucle y su
incremento, dentro del bucle while. O sea que ahora tendríamos la siguiente sintaxis:
(expresión inicialización)
while (condicion) {
instrucciones a ejecutar
.
.
.
(incremento o decremento)
}
9
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
Como se puede ver la variable se inicializa antes de usar el while. La condición de salida se
encuentra justo en el while y dentro del bloque me encargo de incrementar la variable de
inicialización.
El termino API viene del inglés Application Programming Interface, que en español seria
Interfaz de Programación de Aplicaciones esto es un conjunto de funciones y métodos que
permite a los desarrolladores desarrollar programas sin tener que escribir códigos desde cero.
En términos de desarrollo es como una capa de abstracción que representa la capacidad de
comunicación entre distintos componentes de software. El concepto de API y su utilización
es bastante anterior a la popularización de internet. Por ejemplo, existen apis para conectarse
a un sistema operativo (WinAPI) o apis para comunicarse a una base de datos. Con el uso de
internet se vio la posibilidad de que el software y las aplicaciones que podían ser
interconectados a través de una API no tenían por qué estar juntos, sino que podían residir en
sistemas remotos y simplemente tenían que poder comunicarse a través de internet, al fin y
al cabo, lo que estaban haciendo era intercambiar información.
Nota
10
Capítulo 07: JavaScript Avanzado C.F.P Nro. 401 de San Martín
Nota
Nota
Una promesa es un objeto que representa un valor que puede que esté
disponible en estos momentos, en un futuro o que nunca lo esté. Una
promesa es asincrónica, lo que significa que necesita tiempo para
resolverse o finalizar mientras el motor de JS comienza a ejecutar otras
partes del código, a la espera del valor devuelto por la promesa.
fetch(URL_DEL_SERVIDOR)
.then(res => res.json())
.then(res => console.log(res));
.catch( err => console.error(err));
Hemos usado el método fetch() con la URL del servidor que queremos acceder, esta llamada
nos devuelve una promesa a la que pasaremos una función que será invocada cuando se
obtenga la respuesta o se produzca un error. El primer método then() usa el método json()
para convertir los datos de la respuesta de la petición en formato JSON, que es más fácil de
leer y trabajar.
Nota
11