SlideShare una empresa de Scribd logo
JavaScript:
Tipos, objetos y clases
1
© Juan Quemada, DIT, UPM
Tipos de JavaScript
n number
w Literales de números: 32, 1000, 3.8
n boolean
w Los literales son los valores true y false
n string
w Los literales de string son caracteres delimitados entre comillas o apóstrofes
n "Hola, que tal", 'Hola, que tal',
w Internacionalización con Unicode: 'Γεια σου, ίσως', ' '
n undefined
w undefined: representa un valor no definido todavía
Objeto: agregación estructurada de propiedades y métodos
n Se agrupan en clases: Object, Array, Date, ...
w Objeto null: valor especial que representa objeto nulo
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals
Tipos, objetos y valores (ES3 y ES5)
2
© Juan Quemada, DIT, UPM
pn
mk
v1
p1
vn..
..fk
m1
f1
El operador typeof permite conocer el tipo de un valor
n Devuelve un string con el nombre del tipo
w "number", "string", "boolean", "undefined", "object" y "function"
w Todos los objetos (de cualquier clase) devuelven "object", salvo las funciones
Operador typeof (ES3 y ES5)
typeof 7 => "number"
typeof "hola" => "string"
typeof true => "boolean"
typeof undefined => "undefined"
typeof null => "object"
typeof new Date() => "object"
typeof new Function() => "function"
3
© Juan Quemada, DIT, UPM
Todos los objetos de JavaScript pertenecen a la clase Object
n Javascript posee otras clases predefinidas que derivan de Object
w Date, Number, String, Array, Function, ….
n https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
n Un objeto hereda los métodos y propiedades de su clase
w Un objeto puede tener además otras propiedades y métodos propios
Métodos y clases de un objeto utilizan la notación punto o array
n Una propiedad se accede como: objeto.propiedad o objeto.["propiedad"]
n Un método se invoca como: objeto.metodo(…) o objeto["metodo"](…)
Todas las clases tienen un constructor con el nombre de la clase
n El constructor permite crear objetos con el operador new
w Pero los literales suelen más eficientes creando objetos, arrays, etc.
n Por ejemplo, new Object() crea un objeto vacío equivalente a {}
4
© Juan Quemada, DIT, UPM
Clases y herencia
Object
n Clase raíz, suelen crearse con el literal: {a:3, b:"que tal"}
Array
n Colección indexable, suelen crearse con el literal: [1, 2, 3]
Date
n Hora y fecha del reloj del sistema, se crea con constructor: new Date()
Function
n Bloque de código invocado por su nombre, se crea con: function (x) {....}
RegEx
n Expresiones regulares se crean con el literal: /(hola)+$/
Math
n Modulo con constantes (propiedades) y funciones matemáticas (métodos)
Number, String y Boolean
n Clases que encapsulan valores de los tipos number, string y boolean como objetos
w Sus métodos se aplican a los tipos directamente, la conversión a objetos es automática
Más información:
n https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
5
© Juan Quemada, DIT, UPM
Algunas clases predefinidas (ES3 y ES5)
Método: función que se puede invocar sobre un objeto con el operador punto: ".”
Un objeto hereda métodos de su clase, por ejemplo
n los objetos de la clase Date heredan métodos como
w toString(), getDay(), getFullYear(), getHours(), getMinutes(), ….. (ver ejemplo)
n jhttps://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date
n También es posible definir nuevos métodos en un objeto
En un objeto solo se puede invocar métodos heredados o definidos en él
n Invocar un método no heredado ni definido en un objeto
w provoca un error_de_ejecución y aborta el programa
6
© Juan Quemada, DIT, UPM
Métodos heredados
var fecha = new Date(); // El objeto creado contiene fecha-hora de creación (ejecución)
fecha.toString() => Fri Aug 08 2014 12:34:36 GMT+0200 (CEST)
fecha.toTimeString() => 12:34:36 GMT+0200 (CEST)
fecha.getHours() => 12
fecha.getMinutes() => 34
fecha.getSeconds() => 36
Un método se puede definir asociado a un objeto
n El nuevo método solo pertenecerá a ese objeto (no es de la clase)
Al invocar un método cambia el entorno de ejecución de JavaScript
n El entorno pasa a ser el objeto invocado, que se referencia con this
w En el ej., this.titulo referencia la propiedad titulo del objeto sobre el que se invoca resumen()
n this puede omitirse: en el ejemplo this.titulo es igual a titulo
7
© Juan Quemada, DIT, UPM
Definición de un método de un objeto
var pelicula = {
titulo:'E.T.',
director:'S. Spielberg',
resumen:function (){
return "El director de " + this.titulo + " es " + this.director;
}
}
pelicula.resumen() => "El director de E.T. es S. Spielberg"
'E.T.'
pelicula
'S. Spielberg'
director
titulo
Function
resumen
JavaScript:
Referencias a objetos
8
© Juan Quemada, DIT, UPM
Los tipos JavaScript se gestionan por valor o por referencia
n number, boolean o undefined se gestionan por valor
w string se gestiona por referencia, pero es a todos los efectos un valor,
n object se gestiona por referencia
La asignación copia el contenido de la variable
n Copia el valor o el puntero según sea el contenido
La identidad y la igualdad también se ven afectadas
n Comparan el valor o el puntero según sea el contenido
w Salvo con strings donde se comparan los valores (string apuntado) y no los punteros
Valores y referencias
9
© Juan Quemada, DIT, UPM
true
b
1
n
{….}o
"hola"s
Las variables que contienen objetos
n solo contienen la referencia al objeto
En objeto esta en otro lugar en memoria
n indicado por la referencia
Al asignar una variable se copia el puntero
n si se modifica el objeto de una de ellas
w Se modificarán los objetos de las variables
que contengan el mismo puntero
Los parámetros de funciones tienen el
mismo efecto lateral, cuando son objetos
Efectos laterales
de las referencias
a objetos
var x = {}; // x e y tienen la
var y = x; // misma referencia
var z = {}; // la referencia a z
// es diferente de
// la de x e y
y.t = 1;
x.t => 1 // x accede al mismo
y.t => 1 // objeto que y
z.t => undefined
10
© Juan Quemada, DIT, UPM
{}
y
x
{}’z y
x {}
1
t
Cuando pasamos objetos como parámetro
n solo se pasa la referencia al objeto
Si varias funciones modifican el mismo objeto
n las modificaciones se verán en todas ellas
Los objetos son un mecanismo muy eficaz
n para comunicar funciones entre sí
Parámetros
por referencia
11
© Juan Quemada, DIT, UPM
req2
req1 {}
“GET”
method
req2
req1 {}
Las referencias a objetos afectan a la identidad
n porque identidad de objetos
w es identidad de referencias
n los objetos no se comparan
w se comparan solo las referencias
La identidad de objetos no es util si no se redefine
n En los strings si, porque se comparan los valores
Igualdad (debil) de objetos == y !=
n no tiene utilidad tampoco con objetos
w no se debe utilizar
Identidad e igualdad de objetos
var x = {}; // x e y contienen la
var y = x; // misma referencia
var z = {} // la referencia a z
// es diferente de x e y
x === y => true
x === {} => false
x === z => false
12
© Juan Quemada, DIT, UPM
{}
y
x
{}’z
JavaScript:
Algunos métodos de Array
13
© Juan Quemada, DIT, UPM
Array hereda métodos de su clase
sort(): devuelve el array ordenado
n y lo guarda en la variable a
reverse(): devuelve el array invertido
n y lo guarda en la variable a
push(e1, .., en)
n añade e1, ..,en al final del array
w devuelve el tamaño del array (a.length)
pop()
n devuelve el último elemento, eliminadolo del array
Métodos de Array
var a = [1, 5, 3];
a.sort() => [1, 3, 5]
a => [1, 3, 5]
a.reverse() => [5, 3, 1]
a => [5, 3, 1]
a.push(false) => 4
a => [5, 3, 1, false]
a.pop() => false
a => [5, 3, 1]
14
© Juan Quemada, DIT, UPM
join(<separador>):
n devuelve string uniendo elementos
w introduce <separador> entre elementos
w La coma de separador permite
generar CSV
slice(i,j): devuelve una rodaja
n Indice negativo (j) es relativo al final
w índice "-1” es igual a a.length-2
splice(i, j, e1, e2, .., en)
n sustituye j elementos desde i en array
w por e1, e2, ..,en
n Devuelve elementos eliminados
Más métodos
var a = [1, 5, 3, 7];
a.join(',') => '1,5,3,7'
a.slice(1, -1) => [5, 3]
a => [1, 5, 3, 7]
a.splice(1,2,true) => [5, 3]
a => [1, true, 7]
15
© Juan Quemada, DIT, UPM
© Juan Quemada, DIT, UPM
Este ejemplo utiliza un array para gestionar citas
n Una cita es una frase de un autor conocido
La aplicación ilustra
n splice(..) para borrar las citas existentes
n push(..) para añadir nuevas citas al fina
Citas
16
© Juan Quemada, DIT, UPM
17
Citas
La aplicación permite
n Añadir citas al final con
push(..)
n Borrar las citas nuevas
con splice(..)
© Juan Quemada, DIT, UPM
La función generar_vista() genera dinámicamente el
HTML, que muestra cada cita con su botón de borrar,
utilizando un bucle que lo inserta como el HTML interno
del elemento: <div id=“vista”></div>.
push() se usa en el manejador
del evento para añadir un
elemento al final del array.
borrar(i) elimina el
elemento i de frases
con splice(i,1).
Inicia variables, genera
el HTML de las citas y
programa evento Añadir.
Hacer click en el botón borrar invoca
borrar(i) que elimina la cita i del array.
El array actúa de contenedor de citas. Permite
añadir o borrar citas.
OJO! Los cambios se pierden al salir de la página Web.
18
Citas
JavaScript
Objetos y arrays: ejemplo citas
19
© Juan Quemada, DIT, UPM
Objetos y arrays permiten definir y gestionar recursos de datos
n De forma que resulten muy sencillos de utilizar en programas, bases de datos, …
Un objeto puede definir la estructura de los datos de un recurso
n Los objetos se suelen construir con el literal de objeto:
w { propiedad_1:valor_1, …….., propiedad_n:valor_n }
n Cada propiedad guarda un valor, igual que una variable
n Por ejemplo, los objetos nos permiten dar el título y el director de películas favoritas
w var et = { titulo: "E.T.", director: "Steven Spielberg" };
w var star_wars_IV = { titulo: "Star Wars", director: "George Lucas" };
w var psicosis = { titulo: "Psicosis", director: "Alfred Hitchcock" };
w var placido = { titulo: "Placido", director: "Luis García Berlanga" };
w …….
Un array define una colección indexable de recursos
n Un array se suele construir con el literal de array:
w [ recurso_1, recurso_2, …, recurso_n ]
n Por ejemplo, podemos agrupar los objetos anteriores en un array de películas favoritas
w var mis_peliculas_favoritas = [ psicosis, et, placido, star_wars_IV, ….. ];
n donde los elementos de este array son las referencias a las variables que contienen los objetos
20
Objetos y Arrays
© Juan Quemada, DIT, UPM
Frase del día
21
Este ejemplo muestra una cita seleccionada al azar
n Una cita es una frase de un autor conocido
w Cada recarga de la página selecciona una frase diferente
© Juan Quemada, DIT, UPM
Frase del día
22
El ejemplo muestra al cargar la página
n Una frase de un autor conocido
w Seleccionada al azar
n Cada recarga de la página
selecciona una frase diferente
Las frases se guardan en la galería
n La galería es un array de objetos
w guardados en la variable galería
Cada objeto guarda los elementos
n El nombre del autor (español y original)
n Una frase conocida suya
n El URL absoluto a una foto en Internet
El evento onload muestra la frase
n al invocar la función seleccion()
w que elige una frase al azar y la muestra
junto con el nombre y su foto
n El evento onload ocurre cuando
w y el árbol DOM está ya construido
n Para seleccionar otra frase
w Recargar la página
© Juan Quemada, DIT, UPM
Índice aleatorio i selecciona una frase de la galería
Base de datos de frases (variable galeria): array de objetos
Visualiza frase,
autor y foto en
página Web
Elementos
HTML donde
visualizar frase,
autor y foto
23
body
n se elimina margin y padding
n fondo gris
#caja
n Posición relativa, permite posicionamiento
absoluto en .textos y #persona
n Caja ocupa todo el ancho
n Altura automática
n fondo negro
#foto
n Altura fija: 427 pixels
n Anchura automática
.textos
n Posición absoluta respecto a la posición
relativa de la caja
n Font grande y en color blanco sobre fondo
negro de la foto
#persona
n Párrafo en itálica, después de .textos
Frase del día:estilo CSS
© Juan Quemada, DIT, UPM
JavaScript:
Carrusel con citas
24
© Juan Quemada, DIT, UPM
Carrusel con citas
25
Este ejemplo mostramos un carrusel de citas
n Cada 2 segundos se pasa a la siguiente cita
La botonera inferior muestra la cita que se está mostrando
n Se puede cambiar la cita clicando en la botonera
© Juan Quemada, DIT, UPM
Carrusel de citas
26
© Juan Quemada, DIT, UPM
Carrusel de citas
27
© Juan Quemada, DIT, UPM
La galería se saca a un fichero JS exterior (mismo código) Botonera con HTML se
genera dinámicamente
Mostrar primera cita al comenzar.
Colorear en marrón
el botón de la cita
mostrada
Borrar temporizador anterior, por si el anterior no ha vencido todavía (al hacer click en botonera).
Crear nuevo temporizador que muestre la siguiente cita. El manejado del evento invoca la función select con siguiente i.
El evento de selección de cita es un atributo lleva el índice i a la cita en el array.
Mostrar los 3 componentes de la cita: frase, autor y foto.
JavaScript:
Editar carrusel con citas
28
© Juan Quemada, DIT, UPM
29
Se añade un desplegable para
n Añadir, modificar o borrar citas
Los cajetines del desplegable
n se rellenan
w con el contenido de los campos del
objeto mostrado
Al abrir el desplegable se para el
carrusel
n En la imagen mostrada
© Juan Quemada, DIT, UPM
Editar carrusel con citas
Editar carrusel de citas
30
© Juan Quemada, DIT, UPM
Botón para desplegar
edición (en SVG)
Presentación de la
cita y la botonera del
ejemplo anterior.
Cajetines definidos con bloques con atributo “contentEditable”
Botones de editar, añadir y borrar (en SVG)
Editar el
carrusel
de citas
31
© Juan Quemada, DIT, UPM
Editar el carrusel de citas
32
© Juan Quemada, DIT, UPM
Función que genera el selector
de citas con JavaScript.
La variable actual
contiene el índice a
la cita mostrada.
Esta en el ámbito
exterior y puede
ser utilizada en
cualquier función o
manejador.
Borra el selector anterior, porque ahora hay que eliminar el actual y generar un selector nuevo.
Guarda objeto jQuery en una
variable para mayor eficiencia.
Se evitan muchas búsquedas
en árbol DOM.
Inicialización
de la app Web
33
© Juan Quemada, DIT, UPM
Evento para despliegue de los
cajetines de edición de citas.
Para temporizador
Muestra bloques.
Muestra
elementos
de la cita en
cajetines.
Oculta cajetines
Incluye nueva cita
como último elem.
de galeria. Guarda
índice en actual.
Muestra nuevo elemento (índice: actual).
Regenera la botonera de selectores de
citas para incluir el elemento nuevo.
Evento para crear una nueva cita.
Arrancar con la primera cita (índice: 0).
Generar html del selector
de citas con JavaScript.
Final del tema
Muchas gracias!
34
© Juan Quemada, DIT, UPM

Más contenido relacionado

PDF
The Functional Programmer's Toolkit (NDC London 2019)
Scott Wlaschin
 
PDF
JavaScript Inheritance
Jussi Pohjolainen
 
ODP
CompletableFuture
koji lin
 
DOCX
Farmacia galenica practica numero 333
Felix Jhon
 
DOCX
PRACTICA 12 ALICE
estefania loredo cortes
 
PDF
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
David Zapateria Besteiro
 
PDF
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
David Zapateria Besteiro
 
PDF
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
David Zapateria Besteiro
 
The Functional Programmer's Toolkit (NDC London 2019)
Scott Wlaschin
 
JavaScript Inheritance
Jussi Pohjolainen
 
CompletableFuture
koji lin
 
Farmacia galenica practica numero 333
Felix Jhon
 
PRACTICA 12 ALICE
estefania loredo cortes
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
David Zapateria Besteiro
 
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
David Zapateria Besteiro
 
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
David Zapateria Besteiro
 

Destacado (20)

PDF
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
David Zapateria Besteiro
 
PDF
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON
David Zapateria Besteiro
 
PPT
Introducción a HTML5 y CSS3 - ArtMedia 2011
Hernan Beati
 
PDF
Programación Funcional en JavaScript
Javier Vélez Reyes
 
PDF
Introducción al Diseño web
ciwmx
 
PPTX
Html5 y css3: Introducción y aplicación desde hoy
Paradigma Digital
 
PDF
HTML5 y CSS3: como sacarles partido hoy
FRONTDAYS
 
PDF
Ajax: Un nuevo enfoque - flisol2008
Juan Carbajal
 
PPTX
Desarrollo de Aplicaciones Web 2.0 con GWT
Ingenieria Informatica Empresarial
 
PPT
Ordenar arreglos en java
eccutpl
 
PPT
Isabel: Reuniones, Clases y Congresos a través de Internet
Juan Quemada
 
PDF
Arquitectura del Web 2
Juan Quemada
 
PPT
Herramientas para el desarrollo en plataformas móviles web
joycesita
 
PDF
0 entorno php
Carlos A. Iglesias
 
PPT
Vishub description Global Excursion
Juan Quemada
 
PDF
Google html5 Tutorial
jobfan
 
PDF
Presentación TEWC
Carlos A. Iglesias
 
PDF
Entorno PHP
Carlos A. Iglesias
 
PDF
Introducción a los Frameworks CSS
Luis Miguel Martín
 
PDF
CSS
MARTINGVALLE
 
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
David Zapateria Besteiro
 
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON
David Zapateria Besteiro
 
Introducción a HTML5 y CSS3 - ArtMedia 2011
Hernan Beati
 
Programación Funcional en JavaScript
Javier Vélez Reyes
 
Introducción al Diseño web
ciwmx
 
Html5 y css3: Introducción y aplicación desde hoy
Paradigma Digital
 
HTML5 y CSS3: como sacarles partido hoy
FRONTDAYS
 
Ajax: Un nuevo enfoque - flisol2008
Juan Carbajal
 
Desarrollo de Aplicaciones Web 2.0 con GWT
Ingenieria Informatica Empresarial
 
Ordenar arreglos en java
eccutpl
 
Isabel: Reuniones, Clases y Congresos a través de Internet
Juan Quemada
 
Arquitectura del Web 2
Juan Quemada
 
Herramientas para el desarrollo en plataformas móviles web
joycesita
 
0 entorno php
Carlos A. Iglesias
 
Vishub description Global Excursion
Juan Quemada
 
Google html5 Tutorial
jobfan
 
Presentación TEWC
Carlos A. Iglesias
 
Entorno PHP
Carlos A. Iglesias
 
Introducción a los Frameworks CSS
Luis Miguel Martín
 
Publicidad

Similar a Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS, TIPOS - Univ. Carlos III (20)

PPT
programacion orientada a objetos
jent46
 
PDF
Tema 4 clases_y_objetos
BelenMonse
 
PDF
4 manejo de_metodos
ElielMauricioEscobar
 
PPT
Poo
rilara
 
PPT
programacion orientada a objetos
ale8819
 
PDF
11 Curso de POO en java - métodos constructores y toString()
Clara Patricia Avella Ibañez
 
PDF
8.clases y objetos en c++
Ramiro Estigarribia Canese
 
DOC
Separata java script
Carlos Enrique Huamán Solis
 
PPT
El lenguaje C++ (1).ppt
JOSECASHUUG
 
PPT
El lenguaje C++.ppt
John Harold Bonilla
 
PPT
El lenguaje de programacion C++ - Entorno de prog
PaulDelgadoSoto
 
PDF
Programación Orientada a Objetos Ejercicios CAJERO en python.pdf
RonaldFlores691262
 
PPT
Vectors
funkybruster
 
PDF
La palabra reservada this y los métodos "getters" y "setters"
ingemg1
 
PPT
Poo 2009 u2_introd_a_la_poo_2
Axel
 
PDF
PROGRAMACIÓN ORIENTADA A OBJETOS
PEDRO OSWALDO BELTRAN CANESSA
 
PPT
Exposicion Capitulo 10,11,12
jack_corvil
 
PDF
Diseño de la logica
anych27
 
PDF
Estructura de Datos
luna_72
 
DOCX
Programacion fantasticos
Brenda Jazmin
 
programacion orientada a objetos
jent46
 
Tema 4 clases_y_objetos
BelenMonse
 
4 manejo de_metodos
ElielMauricioEscobar
 
Poo
rilara
 
programacion orientada a objetos
ale8819
 
11 Curso de POO en java - métodos constructores y toString()
Clara Patricia Avella Ibañez
 
8.clases y objetos en c++
Ramiro Estigarribia Canese
 
Separata java script
Carlos Enrique Huamán Solis
 
El lenguaje C++ (1).ppt
JOSECASHUUG
 
El lenguaje C++.ppt
John Harold Bonilla
 
El lenguaje de programacion C++ - Entorno de prog
PaulDelgadoSoto
 
Programación Orientada a Objetos Ejercicios CAJERO en python.pdf
RonaldFlores691262
 
Vectors
funkybruster
 
La palabra reservada this y los métodos "getters" y "setters"
ingemg1
 
Poo 2009 u2_introd_a_la_poo_2
Axel
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PEDRO OSWALDO BELTRAN CANESSA
 
Exposicion Capitulo 10,11,12
jack_corvil
 
Diseño de la logica
anych27
 
Estructura de Datos
luna_72
 
Programacion fantasticos
Brenda Jazmin
 
Publicidad

Último (20)

PPTX
Telecomunicaciones proyeccion de ventas 2025.pptx
miguelolivarren2
 
PDF
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
PDF
DIAGRAMA DE PARETO M Camila Duque Loaiza
MariacamilaDuqueloai
 
PDF
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
PDF
El candado imposible de abrir | Seguridad máxima explicada - Revista Técnica ...
Cerrajero 365 Valencia
 
PDF
Tecnología. Programación pseint 10-7 Sol Riaño Támara
edepsolriano
 
PDF
Excel Avanzado ..........................
Alejo857214
 
PDF
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
PDF
0621 LOS MATERIALES Y SUS USOS .2º CICLO_compressed.pdf
AndreaAlegre18
 
PDF
Trabajo Tecnología #2 Periodo (1).pdf ajdj
colgess2
 
PDF
Distribución de Frecuencias Excel Eleazar Muñoz
Eleazar88
 
PDF
Documentos Básicos De Programación.pdf.
kathedelgadoarredond
 
PDF
Tecnología 2do período Eliana valencia.
ElianaValencia28
 
PDF
Liceo departamental MICRO BIT (1).pdfslksjshshwuwjwjjdjdjshshs
edepanaobando
 
PDF
Excel avanzado trabajo grupal tecnologia
mapaulahiguita
 
PDF
Distribución de frecuencias y Diagrama de Pareto en Exce (2).pdf
samuelcuaran
 
PDF
Solución actividad de Diagrama de Pareto
MaraJos722801
 
PDF
Trabajo grupal segundo periodo Tecnología .pdf
edepemanuelflechas
 
PDF
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 
PDF
Índice del libro "Cuentos para Minihackers II: Un verano alucinante"
Chema Alonso
 
Telecomunicaciones proyeccion de ventas 2025.pptx
miguelolivarren2
 
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
DIAGRAMA DE PARETO M Camila Duque Loaiza
MariacamilaDuqueloai
 
actividad tecnologia periodo 1 2025 (1).pdf
jjfch3110
 
El candado imposible de abrir | Seguridad máxima explicada - Revista Técnica ...
Cerrajero 365 Valencia
 
Tecnología. Programación pseint 10-7 Sol Riaño Támara
edepsolriano
 
Excel Avanzado ..........................
Alejo857214
 
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
0621 LOS MATERIALES Y SUS USOS .2º CICLO_compressed.pdf
AndreaAlegre18
 
Trabajo Tecnología #2 Periodo (1).pdf ajdj
colgess2
 
Distribución de Frecuencias Excel Eleazar Muñoz
Eleazar88
 
Documentos Básicos De Programación.pdf.
kathedelgadoarredond
 
Tecnología 2do período Eliana valencia.
ElianaValencia28
 
Liceo departamental MICRO BIT (1).pdfslksjshshwuwjwjjdjdjshshs
edepanaobando
 
Excel avanzado trabajo grupal tecnologia
mapaulahiguita
 
Distribución de frecuencias y Diagrama de Pareto en Exce (2).pdf
samuelcuaran
 
Solución actividad de Diagrama de Pareto
MaraJos722801
 
Trabajo grupal segundo periodo Tecnología .pdf
edepemanuelflechas
 
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 
Índice del libro "Cuentos para Minihackers II: Un verano alucinante"
Chema Alonso
 

Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS, TIPOS - Univ. Carlos III

  • 1. JavaScript: Tipos, objetos y clases 1 © Juan Quemada, DIT, UPM
  • 2. Tipos de JavaScript n number w Literales de números: 32, 1000, 3.8 n boolean w Los literales son los valores true y false n string w Los literales de string son caracteres delimitados entre comillas o apóstrofes n "Hola, que tal", 'Hola, que tal', w Internacionalización con Unicode: 'Γεια σου, ίσως', ' ' n undefined w undefined: representa un valor no definido todavía Objeto: agregación estructurada de propiedades y métodos n Se agrupan en clases: Object, Array, Date, ... w Objeto null: valor especial que representa objeto nulo https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals Tipos, objetos y valores (ES3 y ES5) 2 © Juan Quemada, DIT, UPM pn mk v1 p1 vn.. ..fk m1 f1
  • 3. El operador typeof permite conocer el tipo de un valor n Devuelve un string con el nombre del tipo w "number", "string", "boolean", "undefined", "object" y "function" w Todos los objetos (de cualquier clase) devuelven "object", salvo las funciones Operador typeof (ES3 y ES5) typeof 7 => "number" typeof "hola" => "string" typeof true => "boolean" typeof undefined => "undefined" typeof null => "object" typeof new Date() => "object" typeof new Function() => "function" 3 © Juan Quemada, DIT, UPM
  • 4. Todos los objetos de JavaScript pertenecen a la clase Object n Javascript posee otras clases predefinidas que derivan de Object w Date, Number, String, Array, Function, …. n https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript n Un objeto hereda los métodos y propiedades de su clase w Un objeto puede tener además otras propiedades y métodos propios Métodos y clases de un objeto utilizan la notación punto o array n Una propiedad se accede como: objeto.propiedad o objeto.["propiedad"] n Un método se invoca como: objeto.metodo(…) o objeto["metodo"](…) Todas las clases tienen un constructor con el nombre de la clase n El constructor permite crear objetos con el operador new w Pero los literales suelen más eficientes creando objetos, arrays, etc. n Por ejemplo, new Object() crea un objeto vacío equivalente a {} 4 © Juan Quemada, DIT, UPM Clases y herencia
  • 5. Object n Clase raíz, suelen crearse con el literal: {a:3, b:"que tal"} Array n Colección indexable, suelen crearse con el literal: [1, 2, 3] Date n Hora y fecha del reloj del sistema, se crea con constructor: new Date() Function n Bloque de código invocado por su nombre, se crea con: function (x) {....} RegEx n Expresiones regulares se crean con el literal: /(hola)+$/ Math n Modulo con constantes (propiedades) y funciones matemáticas (métodos) Number, String y Boolean n Clases que encapsulan valores de los tipos number, string y boolean como objetos w Sus métodos se aplican a los tipos directamente, la conversión a objetos es automática Más información: n https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript 5 © Juan Quemada, DIT, UPM Algunas clases predefinidas (ES3 y ES5)
  • 6. Método: función que se puede invocar sobre un objeto con el operador punto: ".” Un objeto hereda métodos de su clase, por ejemplo n los objetos de la clase Date heredan métodos como w toString(), getDay(), getFullYear(), getHours(), getMinutes(), ….. (ver ejemplo) n jhttps://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date n También es posible definir nuevos métodos en un objeto En un objeto solo se puede invocar métodos heredados o definidos en él n Invocar un método no heredado ni definido en un objeto w provoca un error_de_ejecución y aborta el programa 6 © Juan Quemada, DIT, UPM Métodos heredados var fecha = new Date(); // El objeto creado contiene fecha-hora de creación (ejecución) fecha.toString() => Fri Aug 08 2014 12:34:36 GMT+0200 (CEST) fecha.toTimeString() => 12:34:36 GMT+0200 (CEST) fecha.getHours() => 12 fecha.getMinutes() => 34 fecha.getSeconds() => 36
  • 7. Un método se puede definir asociado a un objeto n El nuevo método solo pertenecerá a ese objeto (no es de la clase) Al invocar un método cambia el entorno de ejecución de JavaScript n El entorno pasa a ser el objeto invocado, que se referencia con this w En el ej., this.titulo referencia la propiedad titulo del objeto sobre el que se invoca resumen() n this puede omitirse: en el ejemplo this.titulo es igual a titulo 7 © Juan Quemada, DIT, UPM Definición de un método de un objeto var pelicula = { titulo:'E.T.', director:'S. Spielberg', resumen:function (){ return "El director de " + this.titulo + " es " + this.director; } } pelicula.resumen() => "El director de E.T. es S. Spielberg" 'E.T.' pelicula 'S. Spielberg' director titulo Function resumen
  • 8. JavaScript: Referencias a objetos 8 © Juan Quemada, DIT, UPM
  • 9. Los tipos JavaScript se gestionan por valor o por referencia n number, boolean o undefined se gestionan por valor w string se gestiona por referencia, pero es a todos los efectos un valor, n object se gestiona por referencia La asignación copia el contenido de la variable n Copia el valor o el puntero según sea el contenido La identidad y la igualdad también se ven afectadas n Comparan el valor o el puntero según sea el contenido w Salvo con strings donde se comparan los valores (string apuntado) y no los punteros Valores y referencias 9 © Juan Quemada, DIT, UPM true b 1 n {….}o "hola"s
  • 10. Las variables que contienen objetos n solo contienen la referencia al objeto En objeto esta en otro lugar en memoria n indicado por la referencia Al asignar una variable se copia el puntero n si se modifica el objeto de una de ellas w Se modificarán los objetos de las variables que contengan el mismo puntero Los parámetros de funciones tienen el mismo efecto lateral, cuando son objetos Efectos laterales de las referencias a objetos var x = {}; // x e y tienen la var y = x; // misma referencia var z = {}; // la referencia a z // es diferente de // la de x e y y.t = 1; x.t => 1 // x accede al mismo y.t => 1 // objeto que y z.t => undefined 10 © Juan Quemada, DIT, UPM {} y x {}’z y x {} 1 t
  • 11. Cuando pasamos objetos como parámetro n solo se pasa la referencia al objeto Si varias funciones modifican el mismo objeto n las modificaciones se verán en todas ellas Los objetos son un mecanismo muy eficaz n para comunicar funciones entre sí Parámetros por referencia 11 © Juan Quemada, DIT, UPM req2 req1 {} “GET” method req2 req1 {}
  • 12. Las referencias a objetos afectan a la identidad n porque identidad de objetos w es identidad de referencias n los objetos no se comparan w se comparan solo las referencias La identidad de objetos no es util si no se redefine n En los strings si, porque se comparan los valores Igualdad (debil) de objetos == y != n no tiene utilidad tampoco con objetos w no se debe utilizar Identidad e igualdad de objetos var x = {}; // x e y contienen la var y = x; // misma referencia var z = {} // la referencia a z // es diferente de x e y x === y => true x === {} => false x === z => false 12 © Juan Quemada, DIT, UPM {} y x {}’z
  • 13. JavaScript: Algunos métodos de Array 13 © Juan Quemada, DIT, UPM
  • 14. Array hereda métodos de su clase sort(): devuelve el array ordenado n y lo guarda en la variable a reverse(): devuelve el array invertido n y lo guarda en la variable a push(e1, .., en) n añade e1, ..,en al final del array w devuelve el tamaño del array (a.length) pop() n devuelve el último elemento, eliminadolo del array Métodos de Array var a = [1, 5, 3]; a.sort() => [1, 3, 5] a => [1, 3, 5] a.reverse() => [5, 3, 1] a => [5, 3, 1] a.push(false) => 4 a => [5, 3, 1, false] a.pop() => false a => [5, 3, 1] 14 © Juan Quemada, DIT, UPM
  • 15. join(<separador>): n devuelve string uniendo elementos w introduce <separador> entre elementos w La coma de separador permite generar CSV slice(i,j): devuelve una rodaja n Indice negativo (j) es relativo al final w índice "-1” es igual a a.length-2 splice(i, j, e1, e2, .., en) n sustituye j elementos desde i en array w por e1, e2, ..,en n Devuelve elementos eliminados Más métodos var a = [1, 5, 3, 7]; a.join(',') => '1,5,3,7' a.slice(1, -1) => [5, 3] a => [1, 5, 3, 7] a.splice(1,2,true) => [5, 3] a => [1, true, 7] 15 © Juan Quemada, DIT, UPM
  • 16. © Juan Quemada, DIT, UPM Este ejemplo utiliza un array para gestionar citas n Una cita es una frase de un autor conocido La aplicación ilustra n splice(..) para borrar las citas existentes n push(..) para añadir nuevas citas al fina Citas 16
  • 17. © Juan Quemada, DIT, UPM 17 Citas La aplicación permite n Añadir citas al final con push(..) n Borrar las citas nuevas con splice(..)
  • 18. © Juan Quemada, DIT, UPM La función generar_vista() genera dinámicamente el HTML, que muestra cada cita con su botón de borrar, utilizando un bucle que lo inserta como el HTML interno del elemento: <div id=“vista”></div>. push() se usa en el manejador del evento para añadir un elemento al final del array. borrar(i) elimina el elemento i de frases con splice(i,1). Inicia variables, genera el HTML de las citas y programa evento Añadir. Hacer click en el botón borrar invoca borrar(i) que elimina la cita i del array. El array actúa de contenedor de citas. Permite añadir o borrar citas. OJO! Los cambios se pierden al salir de la página Web. 18 Citas
  • 19. JavaScript Objetos y arrays: ejemplo citas 19 © Juan Quemada, DIT, UPM
  • 20. Objetos y arrays permiten definir y gestionar recursos de datos n De forma que resulten muy sencillos de utilizar en programas, bases de datos, … Un objeto puede definir la estructura de los datos de un recurso n Los objetos se suelen construir con el literal de objeto: w { propiedad_1:valor_1, …….., propiedad_n:valor_n } n Cada propiedad guarda un valor, igual que una variable n Por ejemplo, los objetos nos permiten dar el título y el director de películas favoritas w var et = { titulo: "E.T.", director: "Steven Spielberg" }; w var star_wars_IV = { titulo: "Star Wars", director: "George Lucas" }; w var psicosis = { titulo: "Psicosis", director: "Alfred Hitchcock" }; w var placido = { titulo: "Placido", director: "Luis García Berlanga" }; w ……. Un array define una colección indexable de recursos n Un array se suele construir con el literal de array: w [ recurso_1, recurso_2, …, recurso_n ] n Por ejemplo, podemos agrupar los objetos anteriores en un array de películas favoritas w var mis_peliculas_favoritas = [ psicosis, et, placido, star_wars_IV, ….. ]; n donde los elementos de este array son las referencias a las variables que contienen los objetos 20 Objetos y Arrays © Juan Quemada, DIT, UPM
  • 21. Frase del día 21 Este ejemplo muestra una cita seleccionada al azar n Una cita es una frase de un autor conocido w Cada recarga de la página selecciona una frase diferente © Juan Quemada, DIT, UPM
  • 22. Frase del día 22 El ejemplo muestra al cargar la página n Una frase de un autor conocido w Seleccionada al azar n Cada recarga de la página selecciona una frase diferente Las frases se guardan en la galería n La galería es un array de objetos w guardados en la variable galería Cada objeto guarda los elementos n El nombre del autor (español y original) n Una frase conocida suya n El URL absoluto a una foto en Internet El evento onload muestra la frase n al invocar la función seleccion() w que elige una frase al azar y la muestra junto con el nombre y su foto n El evento onload ocurre cuando w y el árbol DOM está ya construido n Para seleccionar otra frase w Recargar la página © Juan Quemada, DIT, UPM Índice aleatorio i selecciona una frase de la galería Base de datos de frases (variable galeria): array de objetos Visualiza frase, autor y foto en página Web Elementos HTML donde visualizar frase, autor y foto
  • 23. 23 body n se elimina margin y padding n fondo gris #caja n Posición relativa, permite posicionamiento absoluto en .textos y #persona n Caja ocupa todo el ancho n Altura automática n fondo negro #foto n Altura fija: 427 pixels n Anchura automática .textos n Posición absoluta respecto a la posición relativa de la caja n Font grande y en color blanco sobre fondo negro de la foto #persona n Párrafo en itálica, después de .textos Frase del día:estilo CSS © Juan Quemada, DIT, UPM
  • 24. JavaScript: Carrusel con citas 24 © Juan Quemada, DIT, UPM
  • 25. Carrusel con citas 25 Este ejemplo mostramos un carrusel de citas n Cada 2 segundos se pasa a la siguiente cita La botonera inferior muestra la cita que se está mostrando n Se puede cambiar la cita clicando en la botonera © Juan Quemada, DIT, UPM
  • 26. Carrusel de citas 26 © Juan Quemada, DIT, UPM
  • 27. Carrusel de citas 27 © Juan Quemada, DIT, UPM La galería se saca a un fichero JS exterior (mismo código) Botonera con HTML se genera dinámicamente Mostrar primera cita al comenzar. Colorear en marrón el botón de la cita mostrada Borrar temporizador anterior, por si el anterior no ha vencido todavía (al hacer click en botonera). Crear nuevo temporizador que muestre la siguiente cita. El manejado del evento invoca la función select con siguiente i. El evento de selección de cita es un atributo lleva el índice i a la cita en el array. Mostrar los 3 componentes de la cita: frase, autor y foto.
  • 28. JavaScript: Editar carrusel con citas 28 © Juan Quemada, DIT, UPM
  • 29. 29 Se añade un desplegable para n Añadir, modificar o borrar citas Los cajetines del desplegable n se rellenan w con el contenido de los campos del objeto mostrado Al abrir el desplegable se para el carrusel n En la imagen mostrada © Juan Quemada, DIT, UPM Editar carrusel con citas
  • 30. Editar carrusel de citas 30 © Juan Quemada, DIT, UPM Botón para desplegar edición (en SVG) Presentación de la cita y la botonera del ejemplo anterior. Cajetines definidos con bloques con atributo “contentEditable” Botones de editar, añadir y borrar (en SVG)
  • 31. Editar el carrusel de citas 31 © Juan Quemada, DIT, UPM
  • 32. Editar el carrusel de citas 32 © Juan Quemada, DIT, UPM Función que genera el selector de citas con JavaScript. La variable actual contiene el índice a la cita mostrada. Esta en el ámbito exterior y puede ser utilizada en cualquier función o manejador. Borra el selector anterior, porque ahora hay que eliminar el actual y generar un selector nuevo. Guarda objeto jQuery en una variable para mayor eficiencia. Se evitan muchas búsquedas en árbol DOM.
  • 33. Inicialización de la app Web 33 © Juan Quemada, DIT, UPM Evento para despliegue de los cajetines de edición de citas. Para temporizador Muestra bloques. Muestra elementos de la cita en cajetines. Oculta cajetines Incluye nueva cita como último elem. de galeria. Guarda índice en actual. Muestra nuevo elemento (índice: actual). Regenera la botonera de selectores de citas para incluir el elemento nuevo. Evento para crear una nueva cita. Arrancar con la primera cita (índice: 0). Generar html del selector de citas con JavaScript.
  • 34. Final del tema Muchas gracias! 34 © Juan Quemada, DIT, UPM