JavaScript 2019
100% (1) 100% found this document useful (1 vote) 201 views 148 pages JavaScript 2019
Full description 100% found this document useful, Mark this document as useful 0% found this document not useful, Mark this document as not useful Print Embed Report
Save JavaScript 2019 For Later
Concepto Iniciales Programación Orientada a Objetos Fechas, intervalos y cronómetros Arreglos Cadenas de texto Formularios y datos Proyectos GEES
JavaScript
Aprende a programar
en el lenguaje de la Web
e
Instalar el entorno de trabajo
Sintaxis, arreglos, objetos, metodos
Manejo del DOM y componentes HTML
Programacion para smartphones5
i
5
PROXIMO TITULO
0 SUSCRIBIENDOTE EN [Link]\USERS|
JavaScript
Aprende a programar
en el lenguaje de la Web
JavaScript es el lenguaje de programacién mas utilizado hoy,
Juntoa HTML y CSS, le da vida a la gran mayoria de los sitios
Web que visitamos. Pero JavaScript ya no es exclusivo de la
Web: prayectos como NodeJS, Electron y React Native lo
TITULO
JavaScript / Aprende a programar
enel lenguaje de la Web
llevaron al ambito de los servidores, los programas de escritorio ‘AUTOR
ylas aplicaciones maviles, Ademas, cada dia surgen nuevos Femando O. Luna
frameworks (como los lideres y archienemigos React y Angular) ae
para expandir las posibilidades de JavaScript. eaiaceee
En esta guia introductoria, Ferando Luna, con su larga experiencia
de docente y technical writer, nos llevard en un viaje vertiginoso
desde el primer "Hola Mundo” hasta aplicaciones que nos hablan
yacceden a bases de datos. Obviamente, este no pretende ser un
DISENO Y PRODUCCION
GustavoDe Matteo
‘curso comprehensivo, sino un punto de partida para que el lector COLECCION Users Guias
ccomience a programar en este excitante lenguaje, FORMATO 28% 20¢m
PAGINAS 144
Miguel Lederkremer (@leder) ie ari bey Fest 02
Director Editorial
Las 5 tecnologias mas
populares del momento
en Stack Overflow,
el foro de programacién lider.
Copyright © WIMXIX. Es una pubiescion 6
SIKEDICIONES. Hechoeldapésiloquemarca
\aley 11723. Todos los derechos reservados
Esta pubieacion no puede
fen todo nen parte, por ningun medi
tutu, sinal permiso previoy porescito de
SIX EDICIONES. Su inraccén esta penaca
por las leyes 11723 y 25446, La ectoria no
0 o
pekeomnediers Nerconfedisns asgumcimbedwesciny reercenevedsericon gum raspanaabidad alguna por cualquie
lervadade a fabricaién fun
‘Luna, Femando O. ionamiento yo ui
JavaScript: aprende a programar en el lenguaje de la Web / Fernando O, Luna, - | productos que se de
4a ed.- Ciudad Autonoma de Buenos Aires: Six Ediciones, 2019, clas lasmarcas mencionadas entero son
144 p.;28x 200m, propiedad exclusiva de sus respectivos due
fos, Impreso en Acgentina, Libro de edicén
ISBN 978-887-4958-08-2
4. Lenguaje de Programacién.| Titulo Ccasano Grafica S.A. = Ministro Brin 2932
argentina, Primera impresion relizeda en
laa (Lands) Prov. de Bue-
a, enV, MK
DD 005.133 (7826) R de
0s hires - Ager
reduserscom | 1JavaScript
Aprende a programar
en el lenguaje de la Web
PROYECTOS
EXPLICADOS
PASO A PASO
INTRODUCCION
Qué es JavaScript
Configurar el entorno de trabajo.
VsCode
JS integrado versus JS independiente
JavaScript fuera del HTML
Sintaxis basica de JavaScript.
Manejo de condicionales IF-ELSE
2| @redcsrscom
RSSSaaa
CONCEPTO INICIALES
Introduccién a la Programacién
Orientada a Objetos.
Fechas, intervalos y cronémetros
Arreglos
Cadenas de texto
Formutarios y datos
PROYECTOS
Controlar el DOM HTML
Hacer hablar a JavaScript.
Utilizar la API de notificaciones
Almacenar datos localmente.
Implementar SL offline
Encriptar contenido
Detectar conectividad a Internet.
Adaptar graficos y multimedia
segtin la performance.
Capturar fotografias y videos.
Acceder al hardware de los dispositivos.
Los sensores de movimiento.
Manejo de datos remotos con JSON.
Proteger el cédigo mediante ofuscacién.
RRSxraes
BRB
Los archivos de practica marcados
ccon este icono se pueden descargar
gratuitamente desde
Ll J [Link]/u/quiaUserssJavaScript > Introduccion
Qué es JavaScript
JavaScript, cominmente abreviado como JS, es un lenguaje de programacién del tipo
interpretado. Esta basado en el estandar ECMAScript y, a pesar de ser débilmente tipado
ydinamico, también se define como un lenguaje orientado a objetos.
JavaScript nacié en el afio 1995, practicamente _cddigo, dado que esta accién generaba un retardo
de la mano de la WWW, o Internet comercial notable en la carga completa de una pagina. A
Fue disefiado en un principio por Netscape los pocos afios de vida fue destronado por Flash
Communications (hoy, Mozilla Foundation). Player, pero tan solo una década después, volvid
Integrado originalmente como una especie de completamente recargado, y recuperé su lugar y
plugin en los navegadores de la primera era web, labor dentro del desarrollo de sitios web.
fue muy criticado por su lentitud para procesar
11 Ejemplo de listas en
int fibonacci[] = {1, 2, 3, 5, 8, 13, 21, 34}5
Sintaxis
JavaScript toma su mayor
esencia del lenguaje C, y utiliza
convenciones de lenguaje y
algunos nombres que son propios 1/ tjenplo de Listas en Javascript
de Java, aunque Java y JavaScript
‘no guardan relacion alguna entre
si. Las ultimas versiones de JS
permiten que este sea un lenguaje
del lado del cliente, como asi 11 otra Forma de declarar una Lista en Javascript
también del servidor.
var fibonacci[] = {1, 2, 3, 5, 8, 13, 21, 34}5
var fibonacci = new Array(1, 2, 3, 5, 8, 13)5
4] retuseracomIntegracion en navegadores web
Actualmente, JavaScript esta integrado dentro del motor de
los navegadores web més populares. Esto determiné diferentes
implementaciones del lenguaje, y dependiendo del motor,
JS puede tener 0 no ciertas funcionalidades particulares.
NAisenonaiiss)
Googe rene Comin
kus Proyecto KDE (Konqueror Web Browser)
Los navegadores web mas populares y su version adaptada de JavaScript.
‘Almomento de escribir esta obra, los mayores motores web del
mercado son de V8, Rhino y Chakra/EdgeHTML. Por lo tanto,
cualquier desarrollo en JavaScript debe probarse en estos motores,
para garantizar su funcionamiento en los demas.
10 ventajas de utilizar JavaScript puro
Existen decenas de frameworks 0 implementaciones alternativas que utilizan JavaScript
‘como lenguaje y que, a través de diferentes APIs, favorecen el llamado de las sentencias
y funciones de este (query, ReactNative y Angular, entre otros tantos).
Apesar de la facilidad que nos dan estos frameworks, hay muchos beneficios que brinda
JavaScript como lenguaje puro. Entre ellos, podemos destacar los siguientes:
7) sung wrciio eam desl de apps
1 Vesuverpoderoce 6 reves nonce
(Cuando esta integrado en [Esra atorma
lasmoiores web, ejecuta (computadoras, tablets,
ripidamente su sintaxis ‘movies, hardware)
Ya esta integrado en los Elmina el peso aicional
navegadores web més ‘que un framewerk genera,
populares, Introduccion
Configurar el entorno
de trabajo
instalando las herramientas necesarias destinadas a realizar algoritmos éptimos y probar
2 Para poner manos a la obra, delinearemos a continuacion nuestro ambiente de desarrollo,
cada uno de los ejercicios de la forma mas real posible.
Para llevar a cabo esta tarea, lo primero
que haremos sera instalar el IDE donde
programaremos todos los ejemplos practicos. La
sigla IDE (Integrated Development Environment)
significa “entomo de desarrollo integrado”. Se
trata de un programa o interfaz que permite
estructurar un proyecto que requiere ser
programado, En nuestro caso, el IDE que vamos a
utilizar da la posibilidad de incorporar una serie de
herramientas adicionales, denominadas plugins,
que facilitaran aun més la tarea de programacién,
depuracién y verificacion del cédigo.
July 2018 (version 1.26)
Visual Studio Code
Desde hace algunos afios, Microsoft cuenta con
una herramienta totalmente gratuita llamada
Visual Studio Code. Este IDE, desarrollado bajo
el paradigma Open Source e inspirado en el
editor de cédigo Atom, esta disponible para las
plataformas Windows, Linux y Mac.
También existen otros editores con excelentes
prestaciones para cualquier programador, por
ejemplo Alom, Sublime Text o Notepads.
6 | retuseracom
sa Encode
visualstudio,
com/updates
enconiraremas
informacién sobre
cada nueva release
deeste IDE
Plugins esenciales
Existe un compendio de plugins subidos ala
plataforma de Code que ofrecen diferentes
opciones a los programadores, como ahorro
de escritura de codigo mediante plantillas
prearmadas, y acceso FTP para subir el
contenido a una web, entre un sinnimero de.
funciones mas. Estan accesibles desde el
buscador de extensiones, presionando CTRL +
SHIFT + X. Recomendamos siempre utilizar los
plugins indispensables, ya que una instalacién
masiva de ellos ralentizard el IDE.Configurar el IDE
Visual Studio Code cuenta con un sistema de configuracién que permite adaptar el IDE a nuestra
necesidad. Pero, a diferencia del resto de las aplicaciones personalizables, en este IDE se modifica un
archivo JSON a nivel codigo.
41 Ingresemos ala URL hiips://[Link]. ll encontraremos el
link para descargar Visual Studio Code seguin nuestro sistema operativo actual.
Realizado este paso, ejecutamos la instalacién correspondiente.
‘mo
Ya dentro de Code, nos ocupamos de instalar
os plugins SpanishLanguage Pack, que
2D Erproceso do nefslacién es summamonte adaptan toda la interfaz a nuestra lengua madre;
sencillo, guiado como siempre por y Live HTML Previewer, que ejecuta una vista
una interfaz gréfica que nos explica y previa de forma integrada al IDE.
consulta sobre lo que vamos a instalar
ydebemos dejar configurado.
Presionamos la tecla
CTRL seguida de la
coma (,) para abrir
la configuracién del
entorno. Ubicamos alli el
parémetro que deseamos
cambiar, y 10 pegamos
enel panel derecho
modificando su valor por
el deseado.
reduserscom | 7JavaScript > Introduccién
VS Code
VS Code es un completo editor de cédigo fuente que incluye
decenas de funcionalidades (0 plugins) desarrolladas por terceros,
ideales para complementar nuestros proyectos,
A través de la barra lateral, accedemos Todos los archivos que se Dentro de los complementos
rapidamente ala lista de archivos y incluyen en nuestro proyecto basicos que instalamos en
Ccarpetas de nuesto proyecto, buscamos (HTML, CSS, J5, Imagenes, Code, se encuentra Live HTML
fextos o cadenas de caracteres especifcas JSON, etestera) son abierios y Previewer, el cual permite obtener
dentro de los archivos de trabajo, nos listados en esta barra superior Una vista del contenido que
cconectamos y sineronizaras el contenido on solo hacer clic sobre el estamos creando. Lo activamos
contra Github, accedemos ala ventana de archivo en cuestién, podremos presionando CTRL ++.
epuracion de codigo,
plugins dentro de
sumamos mas ver su codigo y comenzar a
de, trabajar sobre é
Los errores y advertencia
que surgen en el eédigo
sonalertados a través
deestosicones, que
dospliegan a ventana de
depuracion integrada en
Code y permiten obtener un
Aqui¥e lista a informacion
‘general de los archivos del
proyecto. Vernos en qué
linea columna de cécigo
ros encontramas, los
es: bulacion, el
istado de ellos. Haciendo, El cOdigo que editemas en cualquier archivo ‘codigo de idioma ye tipo de
licen alguno, se nos proyecto aparecerd en esta rea. Presionando CTRL+ archivo, entre otras tant
cconduce al archivo J/CTRL- podemas hacer zoom para tener una mejor [advertencias y notificaciones
cadigo para corregiia, visualizacion del cédigo, segtin nuestra pref propias de este IDE
B| [Link]Herramientas para el desarrollador
Para depurar JavaScript a lo largo de esta obra, bloques de cédigo anidados HTML, CSS 0 JS;
uilizaremos las Herramientas parael desarrollador. _revisar el comportamiento de la red al cargar
Estas vienen integradas.a todos los navegadores un sito; verficar su performance y la memoria
web y nos permiten, entre otras opciones, que consume; ver informacién sobre una web
depurar cédigo; analizar variables; detectar instalable, por ejemplo, Progressive Web App: y
errores; acceder al cédigo fuente del frontend, analizar el comportamiento responsivo.
de cualquier sitio web; desplegar y contraer
bey Claneeaeful: thee des-mt” style"becharounds rah(28, 288,285)
ripe sr” Cal {aaah shlong e14-0
alba dl hone dns RES
?
res (
Un mundo detras de F12
Las Herramientas para el desarrollador o en detalle sus funciones integradas. Si somos
Developer Tools se activan en cualquier pestana usuarios de otros navegadores web, aqui listamos
de navegacién presionando la tecla F12. Alo las URL de las herramientas para el desarrollador
largo de las proximas paginas, conoceremos mas _ de otros browsers muy populares:
NAVEGADOR WEB —AYUDAENLINEA DE HERRAMIENTAS PARA EL DESARROLLADOR
| MozillaFirefox __| [Link]
von apr content
Herramientas para el desarrollador de los diferentes navegadores web.
Si bien utilizaremos Google Chrome como nuestra referencia para
probar los desarrollos web en JavaScript, las herramientas antes
mencionadas nos permitiran consultar y probar nuestros desarrollos
en otras plataformas en caso de que lo necesitemos.
[Link]| 9JavaScript > Introduccion
JS integrado versus
JS independiente
En nuestro primer acercamiento a JavaScript, repasaremos las ventajas y desventajas
de utilizar la sintaxis JavaScript integrada en un archivo HTML, versus la sintaxis JS
en un archivo independiente. También desarrollaremos nuestro primer proyecto,
el cldsico “Hola Mundo”, de todas las formas posibles que nos permite este lenguaje.
En los inicios de la era Web, JavaScript fue
la estrelia de facil implementacién dentro de
cada documento HTML. La simplicidad de
su cédigo permitia llevar a las webs efectos
notorios sobre imagenes y textos, e interactuar
facilmente con el browser. Esto fue un gran
avance para la época, pero también fue un
arma de doble filo, ya que las conexiones via
médem hacian pesada la carga de contenido
en abundancia. El resultado final fue que JS
no beneficiaba a los websites de la primera
era y, por consiguiente, su implementacién fue
estrictamente limitada y replanteada, de modo
que no perjudicare la velocidad y la respuesta
que el avance tecnolégico de Internet habia
puesto ante nosotros,
The World Hide Web prarect
sora wine
initiative aiming to aive universal accoss to a larse universe of dacunents.
Everything there i= online about KO ts Linked
41 , Hovenbor's Ha revel! , Freqsently Raked Bi
rectly oF indireetty to thi
Wat's out there2(7IPointers to the world’s online information,
Mettte1 fe the brauser you are acing
Prodectot 113
NexISteplt41 , Sorvarst1S1
robotl47) , Librarytt6) 2
ote
ntoenenmnnioeneaiy if
Si bien JavaScript era un lenguaje de
programacién independiente, en ese tiempo
dependia de que los usuarios tuvieran
instalada Java Virtual Machine en su
10 | redeserscom
state, (e.9- Line Model 21 X11 Uiolatt3) ,
TooteCt6l , Hat
Enel link [Link]
ly/ldv8npP podemos
experimentar cémo era
una web y su velocidad
de carga en la época del
médem telefénico, si
CSS, niimagenes..
JavaScript!
computadora. Con los aftos y el gran avance de
los motores de navegaci6n web, JavaScript se
integré a ellos y facilité su uso a la mayoria de
los navegantes webEstructura HTML
Antes de sumergimos en el mundo JS, veamos las bases del lenguaje de marcado
HTML, el cual es fundamental para alojar todos los proyectos que realizaremos en esla
publicacién. Si ya tenemos el conocimiento necesario sobre esta tecnologia, podemos
pasar por alto esta seccién, e ir directamente al desarrollo del primer proyecto.
En la actualidad, se utiliza HTML como lenguaje de desarrollo web. Este término
proviene de HyperText Markup Language, o lenguaje de marcado de hipertexto. Este
‘se ocupa de indicarle al motor de navegacion como debe formatear estructuralmente
una web al momento de cargarla en la pestafia del navegador.
\Veamos a continuacién el cédigo de ejemplo de un HTML base.
Cédigo HTML base
Este tag hace reference @ cuéndo comienze Es la deeiaracion que todo documento HTML debe
contenido preformateado ene! lenguaje de fener como primera instanca, prececiendo al fag
hipertext. El contenido se [Link] el fag -chiml>. Esl insiruccine indica al navegador web
yfnalizacon el fag . Todo qué version de HTML se uiliz6 para escribir la pagina
to que est entre ellos seré anaizedo por el que esta por cargar. Si bien HTMILS norequiere el
navegador web, que ratara de interpreterio Uso de la declaracion , se la sigue
como tagHTML (una imagen, text. un video. emplesndo porque, muchas veces, en una pagina web
elcétera).Encaso de que no pueda hacero, el se incluyen referencias de HTML moderna (HTMLS) y
‘motor de navegacién mostraréel contenido en referencias de HTML anfiguo (HTML 41 o ulterior)
estién como un simple texto.
© indexhtml %
2
width, initial-scale=t'
screen” href="[Link]” />
Esta infografia nos
‘Se usa comiinmente para deciarar Dentro de este tag se agrupa todo el da un panorama
€ contenido principal de la pagina contenido que le da vida ala parte
HTML, como lituloa mostrar, formato _—_grafiea de la pagina HTML: tulos, general de lo que
de coraceresullizado, eferenclasa _—extos, imagenes, videos y audio, HTML necesita
las hojas de estilo CSS, referencias entre otro material que aqu pueda
alosarchivos extemos JavaScript, volcarse. Todo esto finalmente para funcionar.
bloque de codigo JavaScript que conforma la pagina web ens, que es
Soietmanemn tam Rgaumsemnommpueey | /rerteleurncs tit
de la web, y otros tantos recursos nuestro browser. Todo tag deciarado poco mas en los
que complementan la pagina. Al secierta con eltag , y ir
igual que el resto de los tags que cualquier otro tg grtico que se principales tags que
conterman HTML ete se Gera con See eaeeel ea se utilizan en los
la contraparte interpretado por el navegador. apartados
y .
retuseracom | THJavaScript > Introduccién /JS integrado versus JS independiente
Apartado HEAD
Elelemento se ocupa de indicarle al navegador la
codificacién de contenido utilizada en este DOC web. La referencia
UTF-8 garantiza la codificacién estandar Unicode. Es recomendable
ubicar la etiqueta seguida a la apertura del tag .
...
Indica el titulo que lleva la pagina web en si. Es lo que se visualiza en a
ppestafta del navegador cuando se carga un documento HTML.
A través de este elemento, podemos fijar el contenido del documento
para que se ajuste al browser que lo carga (de escritorio, mévil, de
tablet, etcétera).
Permite referenciar el archivo de estilos, cominmente llamado hoja de
estilos, hacia la ruta local o remota de un servidor web.
Apartado BODY
...
Permite encerrar en su interior la mayoria de los contenidos 0 etiquetas
HTML que conforman la pagina web.
... ‘A través de H1, 2, 3, 4, 5 y 6 damos vida alos titulos que se incluyen
antes de un texto extenso.
...
El elemento Paragraph nos permite incluir el texto que se utiliza dentro
de cada sitio web.
‘A través de referenciamos las imagenes que ilustran el
documento HTML.
Este elemento nos permite insertar un video con los controles basicos
(volumen, play, pausa, stop, pantalla completa, etcétera).
Los archivos de audio en los formatos mas comunes son visualizados
junto con el set de controles basicos, a través de este tag HTML.
12] retoserscom
Si bien existe un sinfin de etiquetas
HTML que conforman los documentos
en cuestion, a través de estas tablas
presentamos las mas esenciales.
Muchas de ellas seran usadas a lo
largo de esta obra, y las crearemos,
controlaremos y modificaremos desde
el lenguaje JavaScript.JS dentro del HTML
Comencemos a delinear nuestro primer trabajo, conocido como
lola mundo!”. Para hacerlo, vamos a ingresar en Visual Studio
Code y crear dentro de este IDE el primer proyecto, presionando la
combinacién de teclas CTRL + K + O.
= jf
ae
—
i
Bice
Bice
aoe
Deere
Tal como vemos, Code nos
pediré abriruna carpeta
‘También, en esta misma
ventana, tenemos la opcién de
crear una nueva presionando Broan et ean
elicono correspondiente dela | chem»
barra de herramientas superior.
Hacemos esto, le damos un
nombre ala carpeta, y acto Javascript - Proyecto e1
seguido, presionamos Ab
Carpeta,
Esra seer ieets
primer entorno de proyecto. eae
[Link], presionamos Sree
CTRL + N para generar un
nuevo archivo, que guardamos
con el nombre [Link]
Ahora copiamos en este Como vemos hasta aqui, el cédigo HTML
documento nuestro primer texto les muy basico y prescinde de algunos
HTML, tal como muestra el elementos mencionados en las tablas
siguiente bloque de cédigo de referencia. Esta base nos basta para
desarrollarel primer ejemplo.
[Link] | 13JavaScript > Introduccién /JS integrado versus JS independiente
El tag
Guardamas el cbdigo escrito
hasta el moment, y luego,
arrastramos el archivo © > X BD [Link] den
index hasta una nueva
pestafa del navegador
‘web. El resultado oblenido eens ince
dbe ser el que muestra ia
siguiente imagen
Como podemos apreciar, hemos escrito cédigo JS escrito hasta otra ubicacién del
nuestra primera sentencia JavaScript. Enella archivo HTML. Vamos a ubicarlo precisamente
utilizamos la funcién alert() para visualizar un entre el cietre del tag y el cierre
texto en pantalla del tag . El cédigo quedard de la
Ahora probemos a desplazar el bloque de siguiente forma
Ejecutemos otra vez el archivo HTML,
refrescando la pagina cargada ene!
navegador web meciante CTRL +R.
¢Logtamos e| mismo cometido que
‘antes? cPudimas volver a visualizar el
mensaje escrito en JS?
[Nuestro primer eédigo Javascript
‘Seguramente que si, hemos conseguido lo mismo. local y, luego, la procesa leyendo tal como
Ahora, évemos alguna diferencia entre una y otra leemos un libro: de arriba hacia abajo. Analiza
prueba realizada? cada uno de los tags de la pagina, los procesa,
E| motor de un navegador web, cualquiera y dibuja en la pestafia del navegador web, de
que este sea, busca la pagina web principal manera progresiva, lo que el tag, cédigo script u
(cespecifica) en el servidor 0 URL que le hoja de estilo CSS indica
indiquemos. Al encontrarla, la carga en la caché
14] reteseracomComportamiento de HTML y JS en un web browser
Através de la siguiente infogratia veamos cémo se comportan un
navegador web y un sitio web durante el proceso de solicitud de una
pagina, su devolucién, procesamiento y visualizacién del cédigo.
Peticién
(Cuando un navegador webs hace
la peticién de una pagine ositioa
fl Internet, enviala URL requerida
hacia iran nube. Se producen
<+— todas las redirecciones necesarias
hasta encontrar ladireccion €!
WWW ics : souacrpense taper,
—> ‘ejecuta procesos internosy
finalmente, le dewelve al navegador
lapagina soicteda, ole indica cual
es la pagina principal oalternatva a
la buscada,
Devoluci6n y caché
Lega la pagina soictada por e!
web browser, y como primera een
medida, el navegador se ocup
dealmacenaria en una cache
de datos. Luego, de alli pasa
directamente al motor de
navegacin, que la procesa para,
finalmente, master el contenido —
en pantalla
Procesamiento y visualizacion
Porilimo, ¢l motor del navegador
web analiza y “decodifica”lasintaxis
de la pagina, yva mostrando en
pantalla, progresivamente, cada uno
de los tags que esta incluye. Es por
(50 que la carga de cada pgina de
sitios web que solemos vistar se ve
Ge forma gradual
Pero épor qué explicamos esto? Esta manera sea embebido en el documento HTML 0 en un
de procesar la informacién que tienen los archivo aparte. Es por eso que, en determinadas
navegadores web influye no solo en el cédigo situaciones, si influird el lugar donde ubiquemos
HTML y CSS de cada pagina, sino también en el cédigo JavaScript o la referencia a nuestro
el cédigo JavaScript que esta contenga, ya archivo JS.
retuseracom | 15JavaScript > Introducci
JavaScript fuera del HTML
\Veamos ahora como llevar adelante el mismo ejemplo, pero ufilizando
un archivo externo al documento HTML. Los archivos que alojan
contenido exclusivo de JavaScript finalizan con la extension JS.
Volvamos al proyecto, eliminemos el cédigo dentro del tag
Por ultimo, modificamos el tag de apertura
El resultado debe ser igual al que se muestra en la imagen siguiente.
amc Prec) Si ejecutamos el ejemplo con esta
<> X BD tey/cjuseeitunaDescop/tocesnezadenplarayeasd nueva modificacién, veremos que
legamos al mismo camino que con
el cédigo escrito anteriormente,
vcd Hl ir con la diferencia de que nuestro
Cédigo JS esta escrito en un archivo
separado, y que el bloque de cédigo
que ejecuta el mensaje “Hola
mundo...” esta contenido dentro de
una funcién,
{sta pgina ace
+ eorones Aneto
© index
ae Mas adelante analizaremos para qué
. wa se usan las funciones.
> iene Ahora, como ultima prueba,
: ee & modifiquemos la ubicacion de la
sie linea
[Link] |25JavaScript > Conceptos iniciales
Introduccion a la
Programacion Orientada
a Objetos
Una de las aplicaciones mas comunes en JavaScript, al momento de programar, es la
invocacién de objetos que simplifican mucho las tareas cotidianas al escribir cédigo.
Veamos a continuacién las principales caracteristicas de estos elementos.
Dentro del mundo de la programacién, el
concepto “objetos” hace referencia a algo similar
a lo que sucede en el mundo que nos rodea. Si
miramos a nuestro alrededor, podemos ver un
sinfin de cosas, como mesas, sillas, personas,
puertas, ventanas, elcétera. A su vez, cada
uno de estos objetos tiene un comportamiento
Caracteristicas del Objeto Perro:
4 patas
cola
‘cabeza
2ojos
‘boca
ladea
determinado; por lo tanto, si sabemos qué son y
qué hace cada uno de ellos, entonces tendremos
[Link] su concepto
Si tomamos como referencia un perro, sabemos
que tiene cuatro patas, una cola y ladra. Si
pensamos en un gato, también tiene cuatro patas
yuna cola, pero maulla en vez de ladrar.
Caracteristicas del Objeto Automévil
4ruedas
2puertas
‘ail
‘Wolante
‘motor
2asientos
2faroles delanteros
2 faroles traseros
Sespejos
Por lo tanto, sin importar de qué tipo sean, cuando pensamos en objetos, podemos
identificar que tienen cosas en comun entre si: los atributos y el comportamiento,
26 | reduserscomAtributos
Un atributo es una caracteristica propia de un objeto. Si volvemos al
ejemplo del perro, podemos identificar que algunos de sus atributos son:
altura
color
raza
peso
Comportamiento
Pensando en el objeto
Modelos de objetos
La programacién orientada a objetos nos permite plasmar,
en el mundo del cédigo, modelos de objetos propios
del mundo real. Como seres humanos, aprovechamos
la capacidad de pensar, analizary razoner, para poder
disefar de forma intuitiva, dentro del mundo.
de la programacién, cada objeto que necesitamos
utilizar, junto con sus principales caracteristicas
que lo distinguen del resto
Los principales conceptos que nos brinda
Ia programacién orientada a objetos son:
clases
objetos
atributos
métodos
mensajes
reduserscom |27JavaScript > Conceptos iniciales / Introduccién a la Programacién.
Clases
En JavaScript, cuando necesitamos trabajar con un objeto determinado, creamos una clase de él, que
heredard sus atributos, métodes y propiedades. Veamos en la siguiente imagen un ejemplo de esto.
Objeto Botella —
Objeto botella
Lacase bol es una Elobjetoboteia
meee coleraurm etic altura
pores det oto caracoisheas props :
Botella) odaslos corre hua, meter material
sacterbtce ne centerido nt pe de
Tapa
») ( Etiqueta
TipoDeContenido()
var bot] = new Botella();
ContenidoNeto()
Cuando definimos la clase botl, hacemos que esta sea del tipo Botella(),
con lo cual heredara todas las caracteristicas de esta. Una vez creada la
clase, podemos asignarle diferentes valores a cada uno de sus alributos,
tal como lo representamos en la siguiente imagen.
CObjeto botella Clasebott Clase botlaceite
altura Altura altura
Material Material = pastico Material = vicrio
Tapa Tapa = rosca Tapa = Presion
Etiqueta Eliqueta = Agua mineral Etiqueta = Acete de ova
TipoDeContenido() TipoDeContenido()
TipeDeContenido() = Aceite
ContenidoNeto() ContenidoNeto() Contenidotieto(
<7 ed a!
Atributos
Podemos definir
losatributos como
Mensajes
Oo Un mensaje es una peticion
den objeto otro, para
diferentes variables que este ultimo realice
que representan las una accién especifica
caracteristicas de un jecutando uno de sus
objeto. Cada atributo métodos. Los mensajes
es un componente ‘son los que se ocupan
fundamental de un de relacionar entre silos
objeto, a tal punto que ‘objetos que componen un
define su estado. programa.
28 | reduserscomMeétodos
Son un conjunto de operaciones que un objeto puede realizar de acuerdo
con su estado actual. Cada método que un objeto contiene son funciones
que especifican una accién, de tal manera que definirdn su comportamiento.
Objeto Botella
function contenidoNeto() {
alert('65@ centimetros cubicos');
Contenidoneto() }
a
[Link]();
Coma pademos ver en a figura, uno de los métados que oficia de caracteritica del objeto
boiella es contenidoNeto(). En esie caso, imaginemos a contenidoNeto() como una
funcion de JavaScript cuyo algoritmo interno ejecuta el mélado Alert(), mediante el cual
Conceptos iniciales / Introduccion a la Programacién...
Encapsulamiento
La informacién de un objeto es propia de él, y
para acceder a ella, debemos hacerlo mediante
un método predefinido, y no de forma directa,
leyendo el atributo.
Polimorfismo
momento de enviar o responder una peticion
Abstraccion
La abstraccion hace referencia a la extracci6n
‘oacceso de las propiedades esenciales de un
concepto. Nos ayuda a no enfocarnos en los
detalles que no son utiles o importantes respecto
de lo que estamos realizando.
El polimorfismo nos garantiza que una operacién determinada pueda tener diferentes
comportamientos en distintos objetos, pudiendo estos reaccionar de manera determinada en el
Objeto Persona1
Atture 4,50 ats
Pero 51 es
‘Ato de nacimiento 3980
actonalidad spat
‘obtenerE#ad()
(btener2Hc()
Objeto Persona2
aura 4,00 ats
Peso 91 kes
‘ao de Nacintento 3975,
Naclonalided —Ttaliano
‘btenerEdad()
obtenertxc()
Objeto Persona3
‘atturs 16 ts
Peso oes
‘Bo de Nacintento 1990
NacLonalidad — Hongtonds
‘ootenersda()
etenerixc()
Tomando como premisa la imagen anterior,
vemos un mismo objeto “persona”, con los,
mismos atributos y métodos pero diferentes
valores en cada uno de ellos. Por ejemplo,
sienviamos el mensaje obtenerEdad() a
persona’, nos devolverd como resultado 38
(tomando 2018 como el afio actual), mientras
30 | redserscom
que mandar el mismo mensaje a persona2 y
persona3 nos devolvera como resultado 43 y 28
respectivamente,
Asi funciona el concepto de polimorfismo,
aplicando la premisa de que “un mismo mensaje
a distintos objetos puede devolver diferentes
resultados’Fechas, intervalos
y cronometros
A través de este proyecto, conoceremos las herramientas que incluye
JavaScript para manejar intervalos de tiempo, como asi también para realizar
célculos temporales, desde nuestro cédigo.
En la siguiente infografia veremos cuales son las caracteristicas que JS pone a nuestra
disposicién para controlar intervalos y espacios de tiempo en nuestros desarrollos de software.
SetInterval
+ - ~~ intervalo
setInterval(funcion, intervalo); Esel tiempo que debe pasar
ene la ejecucion de la
‘inion ndcade Se expresa
en milisegundos (1 segundo
setinterval funcion dlvdido 1000). v el intervalo
Esunmétodode JS que seutiiza __Eselpardmetro defuncién oexpresién _ minimo que podernos
para invocar una funcién oevaluar que deseamos que seevalie através _expresares 10 ms,
Una expresion determinada, {el metodo setInterval Sies una
durante un intervalo de tiempo funcion, puede recibir parametros
‘especticado en milisegundos, adicionales, en caso de requeriie.
\Veamos a continuacién un ejemplo de cémo funciona. Crearemos una pagina HTML base y un
archivo JS denominado [Link], dentro del cual escribimos el siguiente codigo:
function intervalo() { Pies pene
console.1og(‘Se ejecuts el intervalo de tiempo.”); eserioe una leyenda mediante
} console log en la consola de
- ; |
reduserscom | 31JavaScript > Conceptos iniciales / Fechas, intervalos y cronémetros
SetTimeout
setTimeout(() => {funcion}, 9000);~ \intenato
Eel tempo que
debe paser ene la
tjecucon dea funciona
sefTimeout void funcion indicac. Se expres
Enel mitododeSufliznds inpidequela _Eselparimetrodefuncisno expresin enlieegurion
paracjecuerunatuncon funcénemétodo quedeseamos que se evaliearaves (Tsegunvo dwdido
Derauarunaexpresién,, _ullzado pueda _delmstodoen cussion Stesuna {000}, yetnteraio
Iungodeurdefernineda invecarsees!——funcin, puede recbirpardmeltos min que podernos
porto de tempo. rise atlcionsles,encaso derecueriios. ——_ndiar es Ome.
Los casos més habituales en los que podemos aplicar setTimeout son, por ejemplo, cuando llammamos
datos remotos y estos llegan de forma asinerénica, Con esta funcién podremos priorizar 0 retrasar la
ejecucién de un bloque de eédigo o de una funcién, luego de un periodo de tiempo estipulado.
Ejemplo de SetTimeout
Modifiquemos el cédigo del ejemplo anterior, creando en el archivo JS la siguiente funcion:
setTimeout(() => {
alert(‘Se ejecuté el Alerta, luego del intervalo establecido en Set timeout.’)
3, 9000);
Como podemos ver en el
cédigo, establecemos que, a
luego de un periodo de 9 eae an
segundos, se ejecute la
funcién Alert() en la aplicacién.
Ejecutemos el cédigo en el
navegador web para observar su
comportamiento. Como podomos aprecar, 2 ierencia de setlnterval),
| método setTimeout( se ejcutaré solo una vez
Manejo de Set timeout
Detener la ejecucion de ambos métodos
Existen métodos que nos permiten detener la ejecucidn preestablecida de setInterval()
y setTimeout(). Veamos a continuacién como utilizarlos:
clearTimeout (variable) ; clearInterval(variable) ;
Permiledetener métodos seTimeoul()donirode nuestra aplicacién, Eslernétodo _Aliqual que lo expicado en
laejecucién del necestaremos crear cada uno de ellos en una petite detener clearTimeout(), debemos
metodo timeout(), variable delermnada:vartot = sefTimeout..)- una funcion iializarpreviamente e
Siestefueinciado_Estonos pemiiainvocar luego. métod felinterval —_mtodo stinteral() en
prevamente, cleaTimeout(),especticando la variable tot prevamene unavariable, para luego
como parametro ae metodo, para ai poder Iniciaizada, poder detener un metodo
detenelaejecucén Si invecamos clearTimeout() specifi, en caso de que
Sin paramettoadiiona, se detendran todos is ereemos mas dene enel
mmélodos sefTimeout() ccads eno programa programa
32 | redeserscomEl objeto Date()
Habiendo definido los fundamentos de
la programacién orientada a objetos, nos
‘ocuparemos de conocer el objeto Date(),
fundamental para numerosos procesos y
‘operaciones con JS que involucran fechas y horas,
/{Creacion de un objeto tipo Date
var d = new Date();
Probemos a escribir esta sentencia
directamente en la consola de las
Herramientas para el desarrollador de nuestro
navegador web. Una vez escrita, ejecutemos:
console. 1og(d);
ya que simplifica su manejo. Se invoca a través del
constructor new Date(), y permite obtener datos
sobre un periodo de tiempo que incluyen afio,
mes, dia, horas, minutos, segundos y mi
o especificar unidades entre todos ellos.
gd
BO & E
> var d = new Date();
undefined
> console. 2o4(d),
Tue Sep 11 2018 11:18:20 GHT-2300 (hora
eeténdar de argentina)
undefined
Clements Console Sources»
Fiter Default levels ¥
‘Come podemos apreciar enla imagen, a través de la consola del navegador, recibimos la
informacién completa dela fecha y hora actuales. Tengamos presente que cada navegador
‘web procesa de manera automtica la fecha yla hora, propias del equipo del usuario.
Personalizar fechas
A través del objeto Date(), no solo podemos obtener la informacién de un dia u hora especifica, sino
‘que también podemos crear un objeto del tipo Date, con una fecha especificada por nosotros:
Var d = new Date(1975, @2, 21);
Luego, mediante console. log, obtendremos el siguiente resultado:
console. log(d);
vya3a4:1
Fri Mar 21 1975 0:00:00 GMT-@388 (hora estandar de Argentina)
TH Ow 7) Filter
Defauk levels ¥ A Group
var d = new Date(1975,03,23);
‘Ahora, éexiste alguna diferencia
en la respuesta que devolvi6
[Link]? Un dato: hay que
prestar atencién al mes. JavaScript
contabiliza los meses desde el 0
hasta el 11, siendo enero el nimero
0, y diciembre el ntimero 11.
cconsole.10¢(¢);
Mon Apr 21 1975 00:
estandar de Argenting
100 iT-0300 (hora
var d = new Date(1975,02,21);
undefined
consote.10g(4);
Fri TEGEEIEETE 00:00:20 cur-0300 (hora
erténdar de argentina)
undefined
reduserscom | 33JavaScript > Conceptos iniciales / Fechas, intervalos y cronémetros
Métodos integrados en Date
En caso de que deseemos utilizar solo una parte de una fecha, podemos recutrir a los métodos:
integrados en el objeto Date. Estos nos facilitardn la tarea de extraccién y nos ahorraran mucho cédigo.
Veamos a continuacién cuales son:
METODO. DESCRIPCION uso
getDay Dewuelve el niimero de dia [Link]()
var d = new date)
undefined
> [Link]() > [Link](a)
ma Sun an 111970 21:35:08 @iT-@208 (hora
> dgetmonth() festindar de Argentina)
> [Link](9525e0000)
952500000
34] retureracomCalcular la edad de una persona
\Veamos a continuacién de qué forma podemos estimar la edad de una persona con
JavaScript, teniendo el dato minimo de su afio de nacimiento. Abrimos la consola del
navegador web para desarrollar el ejercicio alli. A continuacién, creamos dos variables (fiy
fn), donde fi almacena el afio actual, y fn almacena el afio de nacimiento de la persona:
var fi = new Date(2018)
var fn = new Date(1975)
Declaramos una variable denominada edad, en donde simplemente restamos al valor de fi, el afio almacenado
en fn. Luego, desplegamos mediante [Link] el resultado almacenado en la variable edad:
var edad = (fi - fn);
console. log(edad) ;
Visualizar la fecha actual en una web
Construyamos a continuacién el HTML base que usamos en cada proyecto, y también
el archivo JS asociado. Dentro del archivo HTML, incluiremos un tag del tipo .
cuyo id sea “fecha”, Luego, en el archivo JS, creamos la funcion:
function fechaactual() {
var d = new Date();
document. getElementById (“fecha”). innerHTML =
[Link]();
+
Solo nos queda adaptar el HTML, modificando la etiqueta por:
40 x 158 (RG) cements Conle Source»
\Veamos finalmente si
elresultado de nuestro va
ejercicio es igual al de la iets carsetvth
imagen, istidscsisy otimectioty
“itlesrapecto 8) = Visualiar fochac/tie
[Link] |35JavaScript > Conceptos iniciales / Fechas, intervalos y cronémetros
Cuenta regresiva
Acontinuacién realizaremos un ejercicio practico que nos permitira integrar en una web un
sistema de cuenta regresiva, partiendo de la fecha actual, hasta una fecha futura determinada
c) Materialize
‘Como primera instancia, accedemos CSS, un
al portal de descargas del material que framework CSS y JS que complementa
‘complementa esta obra. Ubicamos nuestro desarrollo con una interfaz grafica
el archivo cuenta_regresiva.zip, y lo moderna. Sieditamos el archivo HTML,
descargamos. En él encontraremos el HTML veremos que en el tag integra
base ya escrito, que nos permitira llevar a una hoja de estilos y un archivo de fuente
‘cabo la interfaz grafica del proyecto. tipografica y, al final del tag , un
archivo JS; todos son archivos remotos.
En VS Code, creamos
un nuevo proyecto
denominado Cuenta
regresiva y le agregamos
el HTML incluido en el ZIP
descargado. Lo editamos y
antes del cierre de
agregamos la referencia
al archivo index.
js. Acontinuacién, dentro
de este proyecto, creamos
el archivo en cuestion.
3 Comenzamos entonces
wr coon Sten 4 348 8) aescribir el cédigo en
1 ramen tin erate ere “Sg elarchivoindex,js. Lo
ir Gee © ewtnaduciont) que bés\camenta hard
este script es definir las
variables a utilizar, definir
la fecha futura para la
cual queremos calcular el
tiempo faltante, obtener
el tiempo restante entre
hoy y la fecha futura, y
convertir los milisegundos
del tiempo restante en una
fecha legible por nosotros.Codigo JavaScript
‘Comenzamos por declarar el objeto Date() que almacenaré la fecha futura
var countDownDate = new Date(“Jan 1, 2019 0:00:00”) .getTime();
A continuacién, creamos una variable denominada tiempo, la cual contendrd la funcion JS setinterval()
// Creamos una funcién integrada en la variable ‘tiempo?
var tiempo = setInterval(function() {
}, 1008); setinterva()
ccada 1 segundo.
Ahora reemplacemos los tres puntos dentro del cédigo anterior, por el siguiente cédigo’
var now = new Date().getTime();<————___——~ En laprimera linea, obtenemos
var diferencia = countDownDate - now; <— ela actual
la siguiente, identiticamos
Acontinuacién, pasamos a los célculos matematicos: hoy ynuestro dia futuro.
var dias = [Link](diferencia / (1000 + 68 * 60 * 24));
var horas = [Link]( (diferencia % (1000 * 6@ * 6@ * 24)) / (1000 * 60 * 60);
var minutos = [Link]( (diferencia % (1000 * 68 * 60)) / (1000 * 60));
var segundos = [Link]( (diferencia % (1000 * 68)) / 1000);
Creamos las variables dias, horas, minutos y fecha de hoy y la fecha futura (en milisegundos)
segundos, y utilizamos la funcién [Link](), El método floor() del objeto Math se ocupa de
que nos ayuda a calcular cada uno de los valores _redondeer el numero que da como resultado cada
para ellas, paséndole a cada operacién la variable una de estas operaciones. El codigo final es el
diferencia, la cual almacena el resultado entre la__siguiente:
document. getElement8yId(“cuentaregresiva”).innerHTML = “” + dias + “D+
horas + “H “ + minutos + “ M “ + segundos + “ S “ + “ ";
if (distancia < @) {
clearInterval( tiempo) ;
document. getElementByld(“cuentaregresiva”).innerHTML = “jFeliz 2019
para todos! ”;
Finalmente, mostramos el
resultado obtenido en el
elemento “cuentaregresiva’, y
sila fecha futura es menor que la
actual, mostramos al usuario un PRR
saludo u otro tipo de mensaje.
Dias restantes para el nuevo aio })
reduserscom | 37JavaScript > Conceptos iniciales
Arreglos
Conozcamos qué son los arreglos y cudles son los principales métodos y funciones que
los complementan para que, al momento de programar, se simplifique el acceso a la
informacién que almacenan.
Utilizar arreglos en JS es un procedimiento no tener que acceder a una base de datos 0
eficaz para mantener ordenados y a mano archivo JSON cuando precisamos manipularlos.
aquellos pequefios bloques de informacion Veamos a continuacién una descripcién rapida
que necesitamos manipular o visualizar, yasi_ de los arreglos:
Para contener los elementos que conformarin
el arregio, abrimos y cerramos corchetes, y
agrupamos el contenido dentro de ellos.
Declaramos los arreglos
fen JS de la misma forma
ane
var lenguajes = ['Visual C#', ‘Objective C',
pee 'R', ‘Javascript’, ‘Kotlin'];
arregloestd compuesto texto, las comilas—_almacenar numeros clomentos que
poreadenas detest, (simples Genta del arego, oneal
por cada elemento dobles) debenser env de cadena, sregideben estar
Gebomos abrrcomilasconsistnfes.Poruna_poderos obra Spo po
(implesodobles),y_cuestiénde poliidad, apertura ye oere de ce
cerrarasalfinaizar ——hayqueusarelmsmo coma
cock ter "po de comila por
cadanuevo elemento,
Crear arreglos
Realicemos el primer ejercicio manipulando arreglos creados por nosotros mismos. Abrimos el
navegador web y accedemos a las herramientas para el desarrollador. Nos posicionamos en la
consola, donde escribimos las siguientes lineas de cddigo:
var fibonacci = [8, 13, 2, 34, 5, @ 1, 21, 3]3
var lenguajes = [‘Visual C#, ‘Javascript’, ‘Python’, ‘C++?, ‘PHP’, ‘Kotlin’];
En estas dos lineas de codigo
hemos creado dos arreglos BL & | top | Fike Dafaultlevels ¥ 2 Group sim
en JavaScript: uno de cadena > var Fibonacci = [8, 13, 2, 34) 5) @ 2) 22, 3]5
numérica y otro de texto. Veamos undefined
a continuacién las propladades y > var lenguajes = ['visual c#*, ‘Javascript’, ‘Python’, "c++",
pup", “*xotlin']5
undefines
funciones mas comunes que nos
permiten sacar partido de estos
arreglos répidamente.Métodos mas comunes para el manejo de arreglos
FUNCION 0 METODO DESCRIPCION
arteglo.{i] {i corresponde al niimero de indice. Devuelve el item
correspondiente almacenado en ese indice.
[Link]() Ordena el total de elementos almacenados en el array.
[Link]() Elimina el dltimo elemento del final del array.
[Link](nuevoelemento) __| Agrega un elemento al principio del array.
Probemos algunos de estos métodos sobre los arreglos que hemos creado.
Volvamos a la consola del navegador web y escribamos la siguiente linea:
fibonacci. length
Veremos en la consola un valor numérico, que _ tener en cuenta cuando deseemos acceder a
para el arreglo denominado fibonacei seré el _un item del arreglo en particular. Por ejemplo,
numero 9. Notemos que los arreglos inician si queremos acceder al elemento 5 del arreglo,
la indexacién de su contenido a partir del 0 entonces tendremos que escribir:
(cero). Este ultimo dato es el que debemos
aaa] Seti como posicionamos es nimeros al momenta
fibonacci[7] setere none tsb peti?
Ordenemos a continuacién este arreglo, utilizando el método correcto, seguin lo que
especificamos en la tabla anterior:
[Link]()
Elemente Console Sources Network
Obtendremos asi
en pantalla el orden 7 | iter Defoultleves ¥ FA Group simile
correspondiente de > var fbonacet = 18, 135 2, 34, $5 @ ts 20, 315
los numeros que Undefined
> fibonaces. Length
°
> #bonaced sort)
> (9) (0, 45 13, 2) 2p 3) 34, 5, 8]
componen este array.
reduserscom [39JavaScript > Conceptos iniciales / Arreglos
Ubicar y agregar elementos
Trabajemos ahora con el otro arreglo creado. En él incluimos diversos lenguajes de programacién de
forma desordenada. Busquemos entonces el indice correspondiente al lenguaje JavaScript, como se
muestra a continuacién:
Lenguayjes. indexof (‘Javascript’);
‘Ahora agreguemos un nuevo lenguaje a la lista
[Link]( ‘GoLang? );
Como podemos ver, al agregar un nuevo item al arreglo, este se redimensiona,
Comprobemos esto validando todos los indices del arregio y listando el ultimo de ellos.
TR Gl) Elements Console Sources Network Performance >
DO top ¥ | Filter Default levels ¥ @ Group similar
var lenguajes = ['Visual ca", "Javascript", ‘Python’, ‘c#+", ‘PHP’, *Kotlin'];
undefined
Lenguajes. indexOF ("Javascript");
1
[Link]("GoLang');
7
[Link]
7
Lenguases[6)
“cotang"
40 | reduserscomPractica con arreglos
Acontinuacién, realizaremos una préctica sobre la consola del navegador web, con los
arreglos que hemos creado. En principio, trabajaremos con el arreglo lenguajes, en el
que debemos realizar lo siguiente:
Regenerar el arreglo
Ordenarlo
= Eliminar el primer elemento del artegio
Eliminar el ultimo elemento del arreglo
= Agregar al principio del arreglo un nuevo lenguaje de programacién
@ Agregar otro lenguaje de programacién al final del arreglo
= Por tltimo, volver a ordenar el arreglo
Ena siguiente imagen, podemos apreciar el resultado de este ejercicio, habiendo
agregado los lenguajes de programacion GoLang y Java
Tlements Console Sources Network Performance > ned
top Y | Fiter Defautievels ¥ @ Group similar |
as
var lenguajes = ['Visual CA, ‘Javascript’, ‘Python’, ‘cH, ‘PHP*, “Kotlin']s
undefined
> [Link]()
> (6) [°CH#", "Tovaseript”, “Kotlin*, "PH®", “Bython", "Visual ce]
> [Link]()
visual co"
> Lenguajes. tenguages. push( ‘Gola
5
> Lenguajes-unshift(* eve’)
6
> [Link]()
(6) ["Golang", “Jevo", "Javascript", "Kotlin", "PHP", “Python"]
Los invitamos a recorrer la pagina
web correspondiente a Mozilla
MON, donde encontraremos una
bateria de referencias, ejemplos y
mas informacién para complementar
lo aprendido hasta aqui con los
arreglos: [Link]
[Link]/es/docs/Web/
JavaScript/Referencia/Objetos_
globales/Array
[Link] | 41JavaScript > Conceptos iniciales
Cadenas
de texto
Repasemos de qué forma podemos —
mejorar el manejo de cadenas de texto
almacenadas en variables, accediendo a
las propiedades y métados més utiles que contiene
cada variable JS.
*
J
Enel inicio de esta obra, dimos un panorama general
sobre el uso de variables. Ahora, profundizaremos
enel tema, explorando algunos métodos de las
variables que nos permiten explotar un poco
mas su funcionalidad desde nuestra perspectiva
!
de programadores. Conozcamos los principales.
métodos a través de la siguiente tabla:
METODOS DESCRIPCION
indexOf(cader (cadena) corresponde al texto que se quiere ubicar. El método indexOf devuelve
cl indice correspondiente donde inicia dicha cadena de texto.
substr(i,j) Estos pardmetros funcionan casi de igual manera, cortando una porcién dela
cadena de texto, de acuerdo con los pardmetros establecidos mediante los
substring(i, j) indices [i] y U-
slice(i, j) Existen diferencias entre si, que veremos en la siguiente infografia.
Perit coesena SU dos rar hs Go fers
toLowerCase() Convierte en mindsculas la cadena de texto contenida en la variable.
Eo] Extrae el cardcter correspondiente a la posicién indicada a través del parémetro
fi.
42 | resureracomVeamos en la siguiente imagen un ejemplo de cémo transformar en
mayuisculas y minusculas la cadena de texto almacenada en una variable:
Elements Console Sources Network Performance >
¥ | Filter Defauit levels ¥ © Group similar 1 hidden
1 message var texto = “Esto es Javascript";
undefined
> texto. touppercase();
No errors "ESTO ES JAVASCRIPT
Nowarnings > [Link]();
whe “esto es javascript”
No user messa.
1 verbose
Marcar diferencias entre métodos
Como pudimos apreciar en la tabla anterior, algunos métodos incluidos en las
variables poseen distinto nombre, pero cumplen casi la misma funcidn. ¢Hay una
diferencia sustancial entre ellos? Si, la hay, y la mostramos en la siguiente infografia.
var texto = ‘Est els un fragmento de! tlextlo.|';
012:345}6789 9
Lavariable texto almacena Esta cadena de caracteres posee
una cadena de caracteres. Ln total de 30 posiciones (Ol 29),
var sst = [Link](0, 20)5
El método substr() (sustraer)extrae de la variable texto, un
fragmento de la cadena, comenzando por la posicion 0 (cero);
Ln ftal de 20 (veinte) caracteres.V le almacena en la variable ss.
var str = [Link](11, 20);
método substring() (sustraer una cadena) extrae dela
variable texto un fragmento dela cadena de caracteres,
desde a posicion 1 (once) hasta la posicién 20 (veinte).
Podemos obviar el ultima pardmetro
de este método, y asi obtendremos la
‘cadena de caracteres, hasta el fina
var sst = [Link](11, 29);
EI método slice() cortael contenido dela variable texto, entre la
ppsicion inicialy final indicada, Alferencia de substring(), hay
‘que especificar ambos parémetros de forma obligatoria,
reduserscom |43JavaScript > Conceptos iniciales / Cadenas de texto
Practica rapida
Ejercitemos en la consola del
navegador web lo visto en | Filter Default levels ¥ © Group similar 2 hidden
la infografia anterior, para var texto = ‘Esto es un fragnento de texto.';
tener una mejor idea de como undefined
se comporta cada uno de texto. slice(11,23)
los métodos al momento de algal is ithe
eee texto. substr(8)
“un fragmento de texto.
Verifiquemos qué [Link](21, 20)
resultado obtendremos si “Fragnento”
implementamos una variable texto. slice(-19)
negativa como parametro en el Fragnento de texto.”
método slice(), por ejemplo:
texto. slice(-19);
Concatenar textos
\Veamos a continuacién cémo conealenar o unr dos textos diferentes, ulilizando la funcién concat(),
Para hacerlo, volvemos a la consola del navegador web y creamos las siguientes variables con sus
respectivos valores:
var nombre = “Fernando”;
var apellido = “Luna”;
Ya tenemos dos variables, una con el nombre y otra con el apeliido.
Ahora crearemos una tercera variable donde concatenaremos ambos datos:
var nonbrecompleto = [Link](“ ” + apellido);
Como podemos ver, debemos utilizar una de las dos variables (nombre es el caso ideal)
para concatenar la segunda variable (apellido). En este caso, debemos destacar
que el método concat() puede recibir multiples parametros, no se limita solamente a dos:
[Link](“Fernando”, “ Nicolés “, “ Julian “, “ omar “)
TRE] | Sements Console Sources Network Peformance
BO & 7] ter Delautewie¥
> var nonbre = “Fernando”
var nonbrecenplato = [Link](" " + apellde);
renbreconpieto
rermando Luna"
44 | resureracomSeparar cadenas de texto
De la misma manera en que podemos concatenar, también podemos separar. Para
hacerlo, utlizamos el método split(), que se ocupa de separarel contenido de una
cadena de texto, o numeros, tomando como paraémetro un caracter especial o comodin.
Veamos a continuacién un ejemplo:
var nombrecompleto = “Fernando Oar Luna Mercado”;
‘Tenemos una variable conformada por un nombre completo, donde el dnico caracter que
podemos utilizar como comodin es el espacio entre cada nombre. Entonces, creamos una
nueva variable, que obtendrd el resultado de la separacién de palabras:
var separar = nonbrecompleto. split(" ”);
Ahora, écual es el resultado para acceder a cada uno de los nombres? La variable que recibe
la cadena separada crea un indice por cada una de las palabras. Asi, podremos acceder a
cada palabra simplemente utilizando el nombre de la cadena, mas el indice.
Performance >
Sources
G} G] | Elements Console Network
Ho
> var nonbrecompleto = "Fernando Omar Luna Mercado”
undefined
> var separar = nonbreconpleto. split(" ");
undefined
> separa
(4) [*Fernando",
top ¥ | Filter Default levels ¥ @ G
"omar", “Luna”,
[Link] |45JavaScript > Conceptos iniciales / Cadenas de texto
(ASE ees
Reemplazo de marcadores
\Veamos a continuacién cémo aprovechar las capacidades de
busqueda y reemplazo de cadenas de caracteres, creando un
sistema que nos permita ingresar un texto que queremos buscar,
y otro que oficiara como reemplazante del primero.
Descargamos de la web correspondiente a esta obra el archivo .ZIP
denominado Proyecto04_ReemplazarMarcadores. En él encontraremos
L 1 un archivo HTML y otro TXT. Creamos un nuevo proyecto llamado
Reemplazo de marcadores, y agregamos ambos archivos a la carpeta.
Ahora creamos dentro
del proyecto un archivo
JS. Luego abrimos el
archivo HTML, y dentro
at cea del apartado ,
\Gitloneepinor renorntition ubicamos el espacio
ate me correspondiente antes del
cierre de este tag, donde
incluimos la referencia al
JS creado,
2 Eisiouiente pasos
agregar el c6digo funcional
dentro del archivo index.
js. En él declaramos
tres variables, con las
cuales manejaremos las
cadenas de caracteres;
y dos funciones:
limpiarCampos() y
reemplazar(). Vearios el
toa mn an cédigo:
union remgzane’) € var b5
var r3
var t;
ee ene ena) Simplficamos en tres variables (b,
1,4) la manipulacion de cadenas de
texto que haremos en este ejerccio.
La primera almacenaré el marcador
{que debemos ubicar en el texto, la
segunda almacenaré la palabra que
reemplazara el marcador buscar
Finalmente, la tercera contendré e
bloque de fexto en cuestion
AG | reduserscommplazar Marcadores
‘Como podemos apreciar, en la interfaz de nuestra
aplicacién web contamos con un campo que
tiene miltiples lineas de texto, dos cajas de texto
adicionales (Buscar y Reemplazar) y dos botones:
Reemplazar y Limpiar campos. Agregamos el
‘cédigo para limpiar los campos:
function limpiarcampos() {
document . getElement ById(“txtbuscar”).value =
document. get€lenentById(“txtreemplazar”). value
\Vemos que le funcién limpiarCampos() simplemente se ocupa de vaciar el contenido
agregado en las cajas de texto identificadas por los nombres txtbuscar y txtreemplazar.
function reemplazar() {
b = document. getElenentById(“txtbuscar”). value;
r = document. getElenentBy1d(“txtreemplazar”). value;
t = document. getElenentById(“texto”) value;
if ([Link]().length > © && [Link]().length > 0) {
if ([Link] > @) {
var cambio = [Link](b, r)3
document .get€lement8yId(“texto”).value = cambio;
La funcién reemplazar() captura en las
variables b, ry tlos valores de los campos
correspondientes. Mediante if() analizamos si
las variables b y r contienen datos cargados.
Finalmente, analizamos sia variable t contiene
una cadena de datos y, por ultimo, ejecutamos
el método replace(), pasdndole las funciones b
(buscar) y F (reemplazar)
Para terminar, ubicamos la funcién onclick:
de los botones, y les asignamos las funciones
JS correspondientes. Probamos el resultado
del proyecto pegando, en el campo textarea, el
bloque de texto almacenado en el archivo TXT.
retuseracom | 47JavaScript > Conceptos iniciales
Formularios y datos
Repasemos los diferentes tipos de datos que se pueden manejar en formularios,
HTML, conozcamos como la sentencia For nos ayuda a cargar informacion en
campos de seleccién, y aprendamos a validar datos en formularios.
La sentencia de bucle For nos ayuda a repetir pantalla, o dentro de algun componente web,
un bloque de cédigo especifico N cantidad de como un combo de seleccién. Para comprender
veces, torando como premisa un valor finito para bien su funcionamiento, vamos a abrir la consola
[Link] de los usos efectivos de esta sentencia del navegador web y a escribir en ella el cédigo
es recorrer arreglos, listando los elementosen _ del siguiente arreglo
var cui = [“China”, “Indu”, “Italiana”, “Centroanericana”, “Mexicana”,
“Wediterranea”];
Antes de poner en practica este bucle, tengamos presente el nombre
de este arreglo, y repasemos la siguiente infografia
Iniciamoselbucie —Lavariable ies Lacondicion para que el Elaumento dela
Fer. incicando elparémetro que buclesiga suejecuciones variable serd de
entre parentesis, Ccontrola el bucle del quelavariableiseamenor 1 unidad por cada
los valores For. Seinicisen cero. queel méximovelordela ——_repelcion del buce.
inicialesy finales, g variable comparativa,
for (var iv= @; i ¢ [Link]; i++) {
{Aqui ponemos 1a ejecucién de una o mas instrucciones
// por cada recorrido que hace el For
console. log(cui[i])5
Imprimimes en la consola del navegador web el
valor del areglo cu, especificande através de
lavariable I que indice deseamos visuaizar.
Escribamos ahora en la consola del navegador el siguiente bucle For,
para poder evaluar su resultado:
for (var i = @; i < cui-length; it+) { [Link](cui[i]); }
48 | redeserscomTem
undefined
for (var i =
china
Indu
Ttaliana
Como podemos notar, este
recorre el arreglo cui, ¢
imprime en la consola el valor
de cada uno de sus indices. menor
Nediterranea
undefined
Ejercitacion del bucle For
Existen diversos tipos de campos que permiten el
ingreso de datos a través de formularios web. En
esta oportunidad repasaremos cudles son y qué
podemos hacer desde JavaScript para controlar y
validar el ingreso de datos.
Pero, antes de empezar, veamos con un
‘ejemplo real como aprovechar el bucle For para
cargar un campo de formulario del tipo Select.
<100€T¥9€ hem»
Sieditamos el archivo HTML, veremos que
contiene un elemento del tipo Select. Este
despliega en el documento web un componente
similar a un Combo Box, que puede incluir
[rchina®, "rnd
“Mexicana”, "
rents Conale” Sources Network > *
Fiter Default levels ¥ & Group similar
i", "Italiana", "Centroamericana",
Nediterranea"}3
25 1 < cud-Lengths i++) { [Link](cui[i]); }
meses.
vyns96a:3
nsoes
Llevaremos a la practica el ejemplo
mencionado anteriormente, para lo
cual necesitamos descargar de la
web oficial de esta obra el archivo
Proyecto0S_sentenciaFor.zip. Lo
descomprimimos y creamos un nuevo proyecto en
‘VS Code agregando el documento HTML incluido
enel ZIP.
‘preview »
Sentencia For
Tipo de cocina preterida Todas
multiples opciones para que el usuario seleccione
una. El componente cuenta con un que
permite agregar mas de una opcidn para que esta
ea listada por el componente.
‘Como podemos ver en el cédigo
3S: document. createElement( option" );
HTMLS:
JS: document .createElement (‘email’);
HTMLS:
JS: document .createElement (‘web") ;
HTMLS:
3S: document. createElement(‘tel');
En esta infografia podemos ver cémo se crea cada tipo de campo en
HTMLS, asi como también su equivalente en cédigo JavaScript.
Beneficios para las plataformas moviles
Principalmente, el cambio que hubo en los input types
a partir de HTMLS produjo un beneficio notorio para ans92 1681652100004
quienes desarrollan aplicaciones web, mas que nada
en el terreno mobile. Para entender mejor este tema,
accedamos al material complementario que acompafa a
esta obra y descarguemos el archivo Ejemplo Formulario
de [Link]. Lo descomprimimos y copiamos el HTML.
nvienos sus comentarios
a un servidor web en Internet o dentro de la red local de ferando@temotiecomar
nuestro hogar.
La idea es visualizar esta pagina web desde un ierainaadnae
dispositive mévil, ya sea teléfono inteligente o tablet.
Una vez cargada la pagina en el dispositivo, hagamos enamenantcom
tap sobre el campo web 0 el campo email. Veremos que
el tipo de teclado virtual del dispositivo se adapta para
permitir el ingreso especifico del tipo de dato indicado
por el campo.
Lo mismo ocurre si hacemos clic en el campo Teléfono.
En este caso, se debe activar, principalmente en los
teléfonos méviles, el teclado apto para ingresar
solo nuimeros o simbologia acorde (# * -).
52 | redeserscomValidar por codigo el contenido del formulario
Realicemos un ejercicio que nos permita aprovechar el contenido
del formulario de ejemplo descargado, para validar en él cada uno
de los campos que incluye.
El primer paso es crear el archivo [Link] que no esta incluido
en el proyecto, Luego, verificamos que el archivo HTML tenga la
referencia correspondiente al archivo JavaScript.
Finalmente, analizaremos el codigo necesario para que este
formulario valide el contenido de sus campos, antes de guardarlo.
Funciones de retorno
Creamos una funcién JS por cada uno de los campos a validar. Qué es una
funcién de retorno? Se trata de una funcion que tiene una expresion comparativa
en su interior y que, sobre la base del resultado de la comparacién, retorna TRUE
FALSE a través de la misma funcién. Veamos un ejemplo rapido:
function EsUnaPrueba() {
if == 4) {
return TRUES
} else {
Return FALSE;
+
2Qué ocurre en esta funcién? Comparamos mediante If siel valor 1 es iqual a1
Como esta igualdad es correcta 0 verdadera, entonces se ejecuta return True.
En caso contrario, el valor de la funcién es falso. Ahora, para validar qué resultado
devuelve esta funcion, escribimos el siguiente cédigo en otro bloque JS:
If (EsUnaPrueba) {
//La comparacién devuelve VERDADERO
//€jecutar aca el cédigo correspondiente
}
Expresiones regulares en JS
Una expresion regular es, basicamente, un patron
determinado de textos 0 caracteres que nos
permiten encontrar (o no) coincidencia de uno o
mas de ellos dentro de una variable o bloque de
texto, Por lo general, estos patrones se utilizan
dentro de JS a través de los métodos Exec, Test,
Regexp, Match, Replace y Search.
En nuestra validacién de campos utilizaremos
principalmente el método Test, en contraste con
el contenido cargado en el campo con un bloque
de expresién regular que nos indicara los valores
que debemos analizar.
Los campos que analizaremos de este formulario
son: Nombre, Apellido, Correo electronico, Sitio
web y numero de teléfono. Veamos entonces la
primera sentencia dentro del archivo JS.
reduserscom |53JavaScript > Conceptos iniciales / Formularios y datos
Comparar el contenido de los campos
index
1 string’) ( Aqui podemos apreciar el
var nonbrestring ~ doconentget€lementsyi4("txtonbre*). value: cédigo de dos funciones,
1? CAsnan(vonbresteing)) para validar nombre y
apellido. Capturamos en
una variable el valor de
cada campo, y mediante
la funcion isNan(),
string) verificamos que dicho
ng = dociment. getLenentByid("txtapelido") valve campo no tenga ingresado
5 a eeioneig) un valor numérico. Sida
: como resultado TRUE,
turn falses entonces damos por valido
que el contenido del campo
es texto.
Fonction esr) 1
var expresion = /(http|https):\/\/(\wr:{8,1)\w")?(\S*)(:[8-9]+)2(\/|\/(L wits Pea BK4\-\/]))2/5
var urlstring = docunent .get€lenentByfd( txturl').value;
var expresion = /*[A-2a-20-9._X-]o@[A-Za-20-9.-]+\. [A-Za-z]{2,4)8/3
var enailstring = document. getElenentById(‘txtonail').value;
if ([Link](enailstring)) {
Para comparar una URL
yuna direccién de correo
electronico, usamos dos
bloques de expresiones nme) a os
jar expresion = /°(+]°(C(@,1){0-91(2,31)](@.291-\s\-/0-9]°5/8:
regulares, que permiten Nar nrotelefono = docunent..getElenentByI4("txitelefons").value)
validar los caracteres it ([Link](nrotelefono)) {
que acepta cada uno de
estos tipos de campos.
La URL debera contener
HTTP OHTTPS ademas
de caracteres validos, y la
direccién de e-mail debera En la funcién que compara los valores ingresados en el
incluir @, entre el resto de campo Teléfono, utilizamos una expresién regular que solo
caracteres soportados. acepte nlimeros del 0 al 9, y caracteres como espacio,
Luego utilizamos el método guion, numeral, asterisco o paréntesis. Si comparamos esta
test() para comparary expresién regular con el teclado numérico de un dispositive
aceptar o rechazar su movil, veremos que todos estos caracteres pueden ser
contenido valido. aceptados en el ingreso de un numero telefénico.
54 | redureracomFinalmente, creamos
una funcién que realiza
lainvocacién a las
funciones anteriores,
yenladevolucion de
‘TRUE 0 FALSE por parte
de ellas, realiza una
comparativa del resultado.
Para aquellos casos en
los que no se cumple la
condicién estipulada,
agrega en la variable mErr
el nombre del campo
que hay que completar.
Alfinal del algoritmo, si
quedd uno. mas campos
sin completar, muestra al
usuario un mensaje Alert()
con los campos que debe
completar 0 corregir. De lo
contrario, graba 0 ejecuta
el script de grabacién de
los datos del formularioy
lo confirma mediante otro
‘mensaje en pantalla.
Agregamos el
llamado de la funcién
Corrija los siguientes campos: validoCampos(), que
= Nombre compara el resto de las
~ Apeliido funciones, en el botén
= Correo electrénico Enviar del formulario, y
- Direccién web lo probamos sin agregar
= Teléfono ningun valor en los
campos. El resultado debe
ser tal como se visualiza en
la imagen. Ahora vayamos
agregando valores al azar y
pulsando el botén Enviar.
Expresiones regulares utilizadas
Acontinuacién, un detalle de las expresiones regulares utilizadas, seguin el tipo de campo:
TIPODECAMPO EXPRESION REGULAR
-]+@[A-Za-20-9.-]+\.[A-Za-z](2,4)$/
Campos de texto _| isNan() significa NOT A NUMBER, y valida que el valor del campo no sea un valor
numérico. No funciona como la opcion mas acertada, pero si como la comparativa
mas répida.
Solo nos queda pendiente resolver el tipo Select, que contiene valores en afios,
El lector puede animarse a resolverlo solo con lo aprendido hasta aqui.
reduserscom |55JavaScript > Proyectos
Controlar el DOM HTML
En esta secci6n repasaremos los puntos importantes que brinda
JavaScript para controlar el DOM (una API de programacién para
documentos) desde el mismo cédigo de scripting, y asi crear,
modificar y eliminar cualquier componente HTML y sus clases CSS asociadas
que necesitemos, de una manera facil y dindmica.
Hasta ahora hemos manipulado las de qué modo podemos crear esos mismos
propiedades, métodos y comportamiento componentes directamente desde JS, algo muy
de los componentes de una pagina web a comiin en el estilo de desarrollo de aplicaciones
través de JavaScript, pero siempre creando web y méviles que proponen los diferentes
previamente los componentes HTML desde el _ frameworks JS actuales, como Angular y React,
lenguaje propio de marcado. Veamos ahora entre otros tantos.
Crear componentes HTML
Acontinuacién, comenzaremos aprendiendo a crear componentes HTML desde nuestro
cédigo JS. Para hacerlo, descargamos desde el aparlado de Material complementario de
esta obra, el archivo [Link].
Extraemos los archivos que contiene (un HTML, un CSS y un JPG) y los agregamos a un
proyecto nuevo en nuestro IDE Visual Studio. Veamos el cédigo del archivo [Link]:
“
‘neta nanee"viewport” contente"widthedevice-width, initsal-sealeed, maxinun-2cd
Ya continuacién del cierre del tag , el siguiente script:
var a= speak(‘Hola, mundo!?);
Guardamas la pagina HTML y
la ejecutamos en el navegador
web. Coma resultado,
‘endremos una pagina
completamente en blanco,
pero que, al finaizar su carga,
Feproduce el texto ingresado
ela funcion speak)JavaScript > Proyectos / Hacer hablar a JavaScript
SppechSynthesis
Analicemos a continuacién el cédigo escrito en el primer bloque:
CCreamos una funcién denominada Luego creamos el abjeto msg, tomando como base el tipo
‘Speak(), la cual recibe un parémetro, en de objeto SpeechSynthesisUtterance. Aeste uitimo, le
este caso, llamado mensaje ppasamos el valor del parémetro mensaje (que reproducirs
— si serinvocado).
function speak(mensaje) { 7
Lapropledad var nsg = new SpeechSynthesisutterance(mensaje) ;
voices{2]incica que
iasintetizacion de var voices = window. [Link]();
wezsergenidioma | ~* asg. voice = votces [2];
patil, la propiedat
Pitchdeterminaque “® [Link] = 8.5; Elmétodo
Ds
la velocidad del audio window. speechsynthesis. speak GetVoices() nos
serda la mitad de su — ss permite ablener el
valor predeterminado, listado de todos los
Finalmente, reproducimos el contenido dé texto idiomas soportados
almacenado en el objeto msg, tomando como base la porel sintetizador
configuracion del resto de los parametros que ajustamos, de vor.
Reproducir texto de un 8.
Realicemos a continuacién un ejercicio para
reproducir un texto ingresado mediante la
funcién de sintetizador de voz de JavaScript.
Descargamos de la web el ejercicio Speech_
[Link], del material adicional que acompania
aesta obra, Generamos un nuevo proyecto en
VSCode, agregamos el archivo HTML y creamos
unarchivo JS denominado textoaudible,js.
EIHTML descargado debe
mmostrammos una web sila ala
escribimos en él la siguiente sintaxis: representada en laimagen.
Acontinuacién, abrimos el archivo textoaudible,js y
Como vemos, creamos una
variable denominada texto,
la cual cortesponde al objeto
SpeechSynthesisUt -
'ynshesisuterant®_ var texto = new SpeechSynthesisUtterance(); Para terminar,
Lego creamos una variable ap Var voces = [Link](); establecemos
denoninodaveces. conde | [Link] = ‘2; vionen Be
cargamos deforma dinimica corresponde
todas las voces que el ‘dome espanol
sintetizador de vor de JS rs
sopra.
function reproducirTexto() {
var ta = [Link](‘texto-audible” ).value;
Acto seguido, if ([Link] =! °°) {
‘reamnos una funcién 7 [Link] = ta;
JScon el siguente ~~ | speechSynthesis. speak(texto);
bloque de codigo eens ode
a
64 | redserscomTi tena
ar tanto = Spvehsyrthestsvterane()
Womb + retorted
En la primera imagen verios Renovotee =
‘cémo queda estructurado
nuestro cédigo JS. Al analizarlo, a ee
io co soanetgoelonnt 6
podemos detectar que E aimee)
declaramos una variable ta,
donde almacenamos el valor [neonates
cargado en el cuadro de texto t
de la pagina HTML,
Luego utilizamos un bloque IF
para determinar que la longitud
del texto de esta variable tenga
tna longitud distinta de vacio,o [esto audible
sea, que contenga un texto,
De ser asi, entonces asignamos | fastmnmstars scan amr niea aria aaenree
alla propiedad text del objeto
texto el contenido de la caja de
texto HTML,
Agreguemos un texto escrito, en espanol, al cuadro de texte HTML para
teproducito. Ya con la propiedad text asignada, pulsamos el botéa Play
para reproducir el objeto texto através del mélodo speak), de a API
‘speechSynthesis,
Calcular el tiempo de reproduccion
Vamos a afiadir unas lineas mas de codigo en el archivo JS, para calcular
el tiempo que tarda en reproducirse el audio que escribimos en la casilla.
El cédigo en cuestion para comenzar a medir el tiempo es el siguiente:
[Link] = function(e) {
var t = [Link] / 1000;
console. 1og(‘Tiempo de reproduccién: ‘ + [Link]() + ‘ segundos.”
ib
Y para finalizar la medicién al momento en que termina la reproduccién
del sintetizador de audio, es este otro:
[Link] = function(e) {
var t = [Link] / 1000;
console. log(‘Tiempo de reproducci
“4 [Link]() + ‘ segundos.”);
b
Basicamente, [Link] almacena una funcién que comienza a medir el tiempo
a través de la variable t, cuando pulsamos el botén reproducir
Através de [Link], se
almacena otra funcién que vuelve
‘amedir el tiempo guardado en la
variable t, para asi estimar la demora es
de la reproduccién, en segundos. ect cae
Elresultado de esto debe ser similar
al representado ena consola de
depuracién de la imagen. Mediante
‘el método toFixed(), acolamos el
tiempo en segundos a un numero
entero, y no con decimales.
reduserscom |65JavaScript > Proyectos
Utilizar la API de notificaciones
Las notificaciones web, o notificaciones de escritorio, se han vuelto muy populares en este
Ultimo afio. Veamios qué nos propone JavaScript para que, a través de ellas, integremos
facilmente a nuestros desarrollos una interaccién mas fluida con el usuario.
Como usuarios que navegan ian ae
constantemente la Web,
habremos notado eneste ultimo |@ viesescouweieot La conexion es segura
tiempo que la mayoria de los
sitios de noticias, tecnologia, Teter prem cnt ome ea et
ee raeis RE oe cts espresso emi ee ioe can
redes sociales nos ofrecen soma Acns| Et tacos [UB trees gba gn) =]
notificaciones de escritorio babi, ony vt itor lor deena gob Pour
Sobtellos eventos sucesos Tals Esoeces | QQ ceiado parmtesinpre ests
importantes que ocurren en ae a Bloque sere nee io
ellos, 0 por parte de nuestros peewee a a
contactos en el caso de las spe a
redes sociales. Wager se | (ken a ab
Estos mensajes que
interaccionan en el escritorio.
© pantalla del dispositivo varias idas y vueltas en cuanto de los usuarios. Por lo tanto,
movil del usuario surgen para ala privacidad que cada uno el primer paso que debemos
brindar informacion que las desea o quiere tener, estas dar como desarrolladores es
personas pueden catalogar notificaciones deben realizarse _solicitarles permiso antes de
como importante. Luego de soloa través del consentimiento _emitir una notificacién.
Preparacion del ambiente de pruebas
diferencia de otros ejercicios, el
manejo de notificaciones requiere de la
preparacion previa de nuestro ambiente.
de pruebas. Para esto, debemos oecienas
instalar un servidor web local que nos ‘Niifirne BeBe
garantizard el correcto desarrollo de ® =
este proyecto. Por lo tanto, accedemos
desde nuestro navegador web Chrome
© Chromium al servicio de extensiones
de Google Chrome y descargamos la
extension Web Server for Chrome:
[Link] 3. A continuacién,
pulsamos el botén instalar.
Finalizado el proceso, presionamos el
botén Iniciar Aplicacién, que abre la
ventana de configuracion y aclivacion
de esta extensidn, similar a la que se ve
enla imagen
66 | _redserscomConfiguracion del servidor web
Este servidor web levanta en nuestra computadora el servicio
necesario para emular un web server, mediante la URL http://
localhost:port o [Link] En la siguiente infografia
vemos los puntos clave de configuracién rpida
Pulsar el botén crioose
FOLDER.
2D Navegar hasta la carpeta
del proyecto, seleccionarla
ypresionar ACEPTAR.
Renae
Web Server URL)
Cambiar el puerto o dejar
por defecto la sugerencia,
Q Activar el switeh para que
el servidor comience a
funcionar.
Finalmente, si tenemos un archivo denominado
carpeta que seleccionamos como origen de este servidor web, se
mostraré accediendo a la URL correspondiente.
Dy Notifeaciones con 8 x
CS © locathost:8887
[Ll deren
es
(Pret conpter tan apg
aie ten ae
2287
[Link] en la
reduserscom |67JavaScript > Proyectos / Utilizar la API de notificaciones
Acontinuacién creamos una pagina web basica, denominada por supuesto
[Link], y Ie guardamos en la carpeta que hemos configurado en el servidor
web local. El cédigo de la pagina web debe ser como el siguiente:
Sibien [Link] poco
rudimentario
pregunta hoy si
Un navegador we
soports LocalStorage,
desta manera
sabremos con
certezaque el web
browser que esta
cargando nuestro sitio
funcionara de forma
Sptima con Local y
Session Storage.
[Link]()
La sentencia para aimacenar un dato del lado del usuario es:
Esta opcion podria
aplicarse muy bien para
[Link](““colorDeFondo”, “add8e6”); //celeste ‘guardar dol lado do!
Usuario ol color de fondo
eet ti
[Link]()
Continuando con el ejempio anterior, ahora debemos recuperar el color de fondo quardado,
para mostrarlo en el documento HTML en cuestién.
Var cdf = [Link](“colorDeFondo”) ;
[Link] = cdf;
[Link]()
Y sino deseamos almacenar mas el dato, simplemente invocamos la sentencia:
Y asi, el dato almacenado seré elminado
[Link](“colorDeFondo”); «—_|_~ 138 e/csloalmacenado sors
reduserscom |77JavaScript > Proyectos / Almacenar datos localmente
ees
Salvar datos de manera progresiva
Luego de este repaso rapido, implementemos una solucién util que demuestre dénde
podria aplicarse muy bien el almacenamiento y la recuperacién de datos de manera local.
Para este ejemplo, vamos a recuperar primero el ejercicio del Formulario de datos que
realizamos anteriormente. Abrimos con el editor el archivo [Link], y a continuacion de
la declaracion
<