Professional Documents
Culture Documents
wikilibros
ndice general
1
Programacin en JavaScript
1.1
ndice de contenido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Autores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduccin
2.1
2.2
Caractersticas de JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables
3.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2
Declaracin de variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4
Arrays (Matrices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Control
Condicionales
5.1
If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2
Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3
10
Bucles
6.1
For
6.1.1
11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modicacin de la variable de control dentro del bucle
11
. . . . . . . . . . . . . . . . . . .
12
6.2
Bucles anidados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
6.3
Bucles innitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
6.4
13
6.5
While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Funciones
15
7.1
15
7.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
7.3
Devolucin de datos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
7.4
Funciones recursivas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
ii
8
NDICE GENERAL
FuncionesJS
18
8.1
18
8.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
8.3
18
8.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
8.5
19
8.6
. . . . . . . . . . . . . . . . . . . . . . . . . . .
19
8.7
19
8.8
19
OOP
9.1
20
Creacin de funciones miembro
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10 ClasesJS
21
23
23
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
24
24
11 Formularios
27
27
30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
31
13 Operadores en JavaScript
32
14 Ejemplos de cdigo
33
14.1 Caso 1: Cmo conseguir que un enlace gane o pierda el foco de entrada. . . . . . . . . . . . . . . .
33
33
33
34
34
34
34
34
35
35
35
36
14.12.1 Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
14.12.2 Imgenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
36
Captulo 1
Programacin en JavaScript
Programacin en JavaScript
1.2 Autores
Si introduces algn cambio en este libro, aade tu nombre aqu:
JULIAN DAVID DELGADO. Actualizacin de artculos. 15 de Febrero de 2015.
Mario Vera Aguirre
juan madariaga
1
Captulo 2
Introduccin
El JavaScript es un lenguaje de programacin ampliamente utilizado en el mundo del desarrollo web por ser muy verstil y potente, tanto para la realizacin de pequeas tareas como para la gestin de complejas aplicaciones. Adems,
ha saltado el mbito de la web, y tambin podemos encontrarlo en otros entornos, como es el lenguaje ActionScript
de Macromedia, que acompaa al sistema Flash.
JavaScript es un lenguaje interpretado que, al contrario de las aplicaciones normales, que son ejecutadas por el sistema operativo, es ejecutado por el navegador que utilizamos para ver las pginas. Eso hace que podamos desarrollar
aplicaciones de muy diverso tipo, desde generadores de HTML, comprobadores de formularios, etc..., hasta programas que gestionen las capas de una pgina. Pueden desarrollarse incluso aplicaciones que permitan poder tener capas
en una pgina como si fueran ventanas, y dar la sensacin de estar trabajando con una aplicacin con interfaz de
ventanas.
JavaScript no es el nico lenguaje que podemos encontrar en la web. Tambin tenemos a su gran contrincante: Visual Basic Script. Este lenguaje, desarrollado por Microsoft, est basado en el lenguaje Basic de esta empresa, pero
desgraciadamente slo puede utilizarse en el navegador Internet Explorer. Si queremos que nuestras pginas dinmicas puedan ser vistas desde cualquier navegador y sistema operativo, la eleccin ms adecuada es sin lugar a dudas
JavaScript.
CAPTULO 2. INTRODUCCIN
Otra caracterstica es que podemos encerrar las expresiones que escribamos con una serie de caracteres especiales.
Estos caracteres se denominan operadores y sirven tanto para encerrar expresiones como para realizar trabajos con
ellas, como operaciones matemticas o de texto. Los operadores que permiten encerrar expresiones deben abrirse
siempre. '(', '{' y '[' y deben cerrarse con sus correspondientes ')', '}' y ']', respectivamente.
Como JavaScript es un lenguaje de formato libre, podemos escribir las lneas de cdigo de la forma que consideremos
mejor, aunque por supuesto debemos escribir siempre de la forma correcta. Por ejemplo, podemos escribir las lneas
con un nmero variable de espacios:
variable = hola"; variable="hola"; variable ="hola"; variable= hola ;
Esto signica que podemos aadir tabuladores al inicio de la lnea para justicar los prrafos de cdigo. Tambin
podemos romper las lneas de texto si son demasiado largas:
document.write(Muy \ buenas);
Pero no podemos hacer esto:
document.write \ (Muy buenas);
Slo podemos romper cadenas de texto, no instrucciones.
En ocasiones tenemos que escribir algunos caracteres especiales llamados de escape, porque en ocasiones hay que
utilizar algunos caracteres no imprimibles, como por ejemplo:
document.write (T y yo somos \"programadores\".);
Podemos ver que al introducir comillas dobles dentro de la cadena de caracteres, debemos aadir la barra invertida
'\' para escapar las propias comillas, aunque esta misma expresin se poda haber escrito as:
document.write (T y yo somos 'programadores.);
Otro aspecto importante de JavaScript es la necesidad o no de utilizar el punto y coma ';' al nal de las instrucciones.
Este operador slo sirve para delimitar las instrucciones, pero aunque su uso es obligatorio en la mayora de los
lenguajes, es opcional en JavaScript. Si usamos este operador, podemos incluir varias sentencias en la misma lnea de
cdigo, y si no lo usamos, slo podemos escribir una sentencia cada vez. De todas formas, aconsejamos usar el punto
y coma porque en otros lenguajes como PHP o Java, este operador es obligatorio.
Captulo 3
Variables
En un programa JavaScript nos podemos encontrar con dos elementos bsicos: cdigo y datos. La parte del cdigo
es la que nos permite hacer cosas dentro de la pgina web, y la parte de datos es la que dene el estado de la pgina
web en un momento determinado. Los datos de un programa se guardan dentro de variables.
Qu es una variable? Una variable es como una caja: dentro de una caja nosotros podemos guardar cosas. Slo que
en las variables de JavaScript la caja slo puede guardar una sola cosa a la vez. Y por qu se las llama variables?
Se las denomina as porque su contenido puede cambiar en cualquier momento durante el desarrollo del programa.
De esta forma, una variable en JavaScript puede contener distintas cosas segn donde se encuentre en el programa:
nmeros, letras, etc...
CAPTULO 3. VARIABLES
Tambin podemos crear variables con valores lgicos. Eso signica que la variable podr tener slo dos valores:
verdad o mentira.
var miVar = true;
Los valores admitidos para este tipo de variables son true y false. Este tipo de variables nos vendrn muy bien para
crear condiciones y como valor para devolver en funciones, que veremos ms adelante.
Y por ltimo tenemos un tipo de dato especial: los objetos. Y qu son los objetos? Son cosas que podemos usar
en nuestro programa para representar entidades. Esto lo entenderemos muy fcilmente con unos ejemplos.
Estamos rodeados de objetos: mesas, libros, monitores, ratones, cuadros, etc... Algunos son ms simples y otros son
ms complicados. Podemos manipular todos ellos segn sus caractersticas y su forma de interactuar con el entorno
donde estn. Por ejemplo, una mesa sabemos que tiene cuatro patas, una tabla lisa, y que es de un color o varios colores.
Es decir, que podemos determinar una mesa por sus propiedades o atributos. Pero adems, con la mesa podemos hacer
cosas: podemos poner cosas encima, podemos usarla para comer o leer y a veces podemos colgar cosas de ellas, por
ejemplo en un revistero. Todo eso son mtodos o comportamientos que la mesa tiene para interactuar con el resto de
su entorno.
Pues bien, podemos decir que los objetos en JavaScript son muy parecidos: tienen propiedades (datos) y mtodos
(cdigo). Podemos crear y usar objetos para manejar elementos del navegador web: una ventana del navegador es un
objeto window, una pgina HTML es un objeto document, y una imagen es un objeto de tipo Image. Es fcil darse
cuenta de que los objetos son de un determinado tipo: un objeto mesa, un objeto ventana, un objeto ratn, etc... Todos
los objetos de un mismo tipo tienen caractersticas semejantes, aunque luego cada objeto tiene propiedades con valores
distintos dependiendo de cada caso. As, dos mesas puede tener color marrn o azul, pero las dos seguirn teniendo
patas, que pueden ser 4 5, depende... En JavaScript, los objetos son muy importantes, como vamos a comprobar en
el siguiente captulo, que trata de los arrays (matrices) y las sentencias de control.
Captulo 4
Control
Una vez que nos sabemos manejar con variables y matrices, que son los datos de nuestros programas, debemos
aprender a crear cdigo, que es lo que hace que nuestro programa funcione.
Hasta ahora hemos visto cmo manejar los datos del programa, pero slo con variables no podemos manejar un
programa. Necesitamos escribir cdigo fuente que nos permita conseguir que el programa haga cosas. Normalmente
los programas tienen un ujo de ejecucin: se ejecuta lnea a lnea, interpretndolas y comprobando el resultado de la
ejecucin. Pero a veces eso no es suciente. A veces tenemos que controlar lo que hace el programa, permitindonos
ejecutar un cdigo u otro dependiendo de las circunstancias, o bien repetir el mismo cdigo varias veces segn unas
condiciones concretas.
Cuando nos levantamos por la maana, miramos por la ventana para decidir qu ropa nos ponemos. Decidimos entre
una camisa blanca o un jersey azul dependiendo de si hace fro o no:
Si hace fro -> me pongo el jersey. Si hace calor -> me pongo la camisa.
Captulo 5
Condicionales
5.1 If
En un programa podemos realizar el mismo tipo de decisiones gracias a la instruccin if:
if (condicin) { cdigo_A } else { cdigo_B }
Veamos lo que tenemos aqu. Primero, comprobamos la condicin en la que vamos a basar nuestra decisin (veremos
ms adelante cmo crear condiciones). Si la condicin es vlida (si es verdadera), se ejecutar el primer bloque de
cdigo que est entre llaves ({}); si no, se ejecutar el siguiente bloque de cdigo, el que se encuentra debajo de la
palabra else. Es decir, si la condicin es verdadera, ejecutamos cdigo_A, y si no, cdigo_B.
De esta forma, podemos tomar decisiones simples que nos permiten cambiar el cdigo que ejecuta el navegador, de
forma que podemos controlar su ejecucin fcilmente. Un ejemplo es este:
var edad = 18; if (edad >= 18) { alert(Eres mayor de edad); } else { alert(Eres menor de edad); }
Primero denimos la variable edad con el valor numrico 18. Despus comprobamos si el sujeto es o no mayor de
edad leyendo el valor de la variable: si edad es mayor o igual que 18, entonces le decimos que es mayor de edad; si
no, le decimos que es menor de edad.
alert es una funcin de Javascript que nos permite mostrar un mensaje en pantalla.
Pero, qu ocurre cuando queremos hacer varias comprobaciones al mismo tiempo? Entonces podemos usar la instruccin else if.
if (edad > 18) { alert(Tienes ms de 18 aos); } else if (edad == 18) { alert(Tienes 18 aos); } else { alert(Tienes
menos de 18 aos); }
De esta forma, podemos extender las condiciones todo lo que queramos para cubrir todos los casos necesarios. Hay
que destacar que todas las condiciones son sucesivas y que slo se ejecuta una de ellas. Adems, el ltimo else es el
que se ejecuta en el caso de que ninguno de los if anteriores sea vlido.
5.2 Switch
Hemos visto cmo gracias a if-else podemos decidir qu hacer en determinadas situaciones. Pero a veces slo querremos decidir entre unos valores, y ejecutar cdigo dependiendo de los posibles valores de una variable o devueltos por
una funcin. Para no ensuciar tanto el codigo usando muchas sentencias if podemos usar la sentencia switch-case:
switch (variable) { case valor1: // codigo para valor 1 break; case valor2: // codigo para valor 2 break; case valor3:
case valor4: case valor5: // codigo para valor 3, valor 4 y valor 5 break; default: // cdigo si no es ninguno de los
anteriores }
En este ejemplo, comprobamos varios valores de la variable variable, de forma que cada uno de ellos permite ejecutar
un cdigo diferente dependiendo de la situacin. Ahora bien, si nos jamos en valor3, valor4 y valor5, comprobamos
que slo se ejecutar el cdigo que aparece bajo valor5, porque los otros valores estn vacos, pero tambin porque no
tienen una clusula break. Esta palabra reservada corta la ejecucin del cdigo Javascript en el punto en que aparece,
9
10
CAPTULO 5. CONDICIONALES
saliendo del bloque de cdigo en el que se encuentra. Esto tambin nos servir, por ejemplo, cuando veamos bucles.
Con esto, comprobamos que switch nos puede ayudar a ejecutar cdigo de forma condicional, pero sin las complicadas
operaciones que debemos realizar en if. Sin embargo, switch no puede nunca sustituir a if, situacin que a la inversa
s ocurre.
Captulo 6
Bucles
En programacin, la funcin principal de un programa es aquella que es ejecutada para que sus instrucciones sean
realizadas, bien por el procesador central (en el caso de un lenguaje compilado como C o Pascal), o por un intrprete,
que es un intermediario entre el programa y el procesador central. De esta forma, la ejecucin lineal de las instrucciones genera acciones, cosas que nuestro programa hace porque se lo hemos indicado. Ahora bien, Qu ocurre
cuando queremos hacer varias veces una misma cosa? Tendramos que escribir el mismo cdigo varias veces, aunque
el problema sera ms peliagudo si encima el nmero de veces a ejecutar el cdigo fuera variable, cambiase segn el
estado del programa (denido por las variables). Para ello tenemos dos tipos de elementos fundamentales: bucles y
funciones.
Un bucle permite repetir varias veces el mismo cdigo en la misma situacin, incluso aunque la repeticin de ese
cdigo sea variable y no la misma cantidad de veces cada vez. Como estudiaremos luego, tenemos a nuestra disposicin
dos bucles, for y while. En el caso de JavaScript, los bucles son condicionales, es decir que, como en el caso de if,
necesitamos de condiciones como las que hemos estudiado para realizar las repeticiones de cdigo. En otros lenguajes
de programacin existen bucles incondicionales, lo que signica que slo pueden ir de cierto punto a cierto punto (por
ejemplo, para contar de 1 a 10, aunque esto, como veremos, tambin lo podemos hacer con los condicionales).
Por ltimo, las funciones son elementos esenciales en programacin por dos motivos: permite reutilizar el cdigo
de nuestro programa no slo en el mismo programa, si no en otros posteriores, y adems, permite estructurar las
aplicaciones de forma que podamos dividir el problema en otros ms pequeos. De ah que a la programacin con
procedimientos y funciones se la llame estructurada (y no funcional como suelen indicar algunos netos: la programacin funcional, que existe, es totalmente diferente de la programacin con funciones). Veremos cmo reunir
cdigo en porciones llamadas funciones y usarlo varias veces en otras partes del cdigo de nuestros programas.
6.1 For
Un bucle for nos permite repetir un bloque de cdigo segn unas condiciones concretas, siempre que estas sean
verdaderas. Un bucle for tiene tres partes:
inicializacin: en esta parte, debemos indicar las variables que vamos a usar en la condicin. Lo ms habitual
es declarar variables numricas, pero pueden ser perfectamente cadenas de caracteres, booleanos u objetos.
condicin: una o varias condiciones (unidas por operadores lgicos), que deciden el nmero de iteraciones del
bucle.
operacin: una expresin que normalmente (aunque no es imprescindible) modicar las variables denidas
en la primera parte.
Un ejemplo simple de bucle for sera:
for (x = 1; x < 10; x++) { document.write(El nmero es " + x + "<br>"); }
Vamos a analizar este ejemplo. Fijmonos en la primera linea, donde podemos encontrar las tres partes que indicbamos antes:
11
12
CAPTULO 6. BUCLES
x = 1 (inicializacin): aqu usamos una variable x y le asignamos el valor 1, que ser el valor de inicializacin
del bucle.
x < 10 (condicin): nos encontramos con una condicin muy simple, y que se leera como: si x tiene un valor
menor que 10, la condicin es vlida. Si la condicin es vlida, el bucle seguir ejecutandose invariablemente.
Veremos que eso puede generar un pequeo problema, que a veces podemos incluso aprovechar para nuestros
propsitos, el denominado "bucle innito".
x++ (operacin): aqu nos encontramos con una operacin matemtica usando un operador tipogrco "++",
que viene a ser la misma operacin que "x = x + 1". De hecho, tambin podemos usarla en vez de la que
aparece, pero lo normal es que usemos un operador como ste (de hecho, si estudiamos cdigo realizado por
otros, veremos que es la forma ms comn).
Por tanto, el bucle for puede leerse como: "iniciamos 'x' con valor 1; el bucle se ejecutar mientras el valor de 'x' sea
menor que 10, y cada vez que se ejecute el bucle el valor de 'x' se incrementar en 1"
6.1.1
A continuacin podemos ver un ejemplo de cmo podemos usar la variable de control del bucle dentro de ste:
for (x = 1; x < 16; x++) { if (x % 2) { x++; } document.write('Mi nmero es ' + x + '<br>'); }
Podemos apreciar en este ejemplo que el resultado no es el aparentemente esperado para este bucle, dado que aunque
en la parte de operacin incrementamos la variable slo en 1, el resultado nal es que slo vemos nmeros pares en
la ventana. Por qu? Fijmonos en el cdigo del bucle:
el condicional if slo ser cierto en el caso de que el mdulo de 'x' (la operacin matemtica de 'resto', representada por el operador '%') devuelva como resultado un valor impar.
si la condicin de if se cumple, se ejecutar un trozo de cdigo que incrementar el valor de 'x' en uno, inuyendo
de esta forma en el desarrollo del bucle.
De esta forma, en vez de mostrar los valores numricos del 1 al 15, como sera en el caso normal, resulta que aparecen
slo valores pares. El truco en este cdigo es sibilino pero potente: la operacin 'x % 2' devolver un 0 si 'x' es par, pero
devolver un valor distinto si es un nmero impar. Esto que signica? Si el valor de la operacin es cero, la condicin
es falsa (es un comportamiento muy habitual en muchos lenguajes de programacin), con lo que la condicin slo
ser verdadera cuando 'x' sea impar. Un nmero impar devolver un mdulo mayor que cero al dividirlo entre 2. Al
incrementar un valor impar en 1, se convierte en un valor par, que es lo que nalmente vemos en pantalla.
Parece enrevesado, pero un estudio a fondo de este cdigo nos permite apreciar algunas de las propiedades ocultas
de la programacin en JavaScript. Muchas de estas propiedades y caractersticas se aprenden con la experiencia, pero
en este curso veremos algunas de ellas que nos sern tiles en nuestro trabajo futuro.
13
Esto genera un pequeo problema... Si este bucle se ejecuta constantemente... Qu hacemos para detenerlo o controlarlo? Se pueden utilizar dos palabras para controlar un bucle (sea cual sea), ya sea nito o innito: break y
continue.
Sin embargo, LAS BUENAS PRCTICAS DE PROGRAMACIN DESACONSEJAN TOTALMENTE EL
USO EN CUALQUIER LENGUAJE DE PROGRAMACIN DE LAS SENTENCIAS break Y continue COMO MECANISMO DE CONTROL DEL FLUJO DEL PROGRAMA.
break es la palabra reservada para cortar un bucle en un momento determinado. Es muy usada en condicionales if, ya
que al darse una cierta condicin, podemos controlar un bucle cortndolo cuando se d un cierto momento concreto.
continue, sin embargo, tambin corta la ejecucin del bucle, pero no igual que break. Mientras que break naliza
denitivamente el bucle, continue salta lo que queda de bucle y sigue la siguiente iteracin (repeticin) sin ms.
var x = 1; for (;;) { x++; if (x > 5) break; document.write(x + '<br>'); }
En este ejemplo vemos que, cuando el valor de x sea mayor de 5, el bucle se romper. En este otro nos permite
apreciar el resultado de usar continue:
for (x = 1; x < 10; x++) { if (x % 2) continue; document.write(x + '<br>'); }
Ya nos podemos imaginar el resultado.
6.5 While
El bucle while, al igual que el bucle for, tambin es condicional, aunque mucho ms simple que ste, como vemos en
el siguiente ejemplo:
var x = 1; while (x < 10) { document.write(Mi nmero es: " + x + "<br>"); x++; }
Como vemos, este bucle es idntico al bucle for que estudiamos en el apartado anterior pero mucho ms simple.
Para qu hay dos bucles que al n y al cabo hacen los mismo? En el pasado, for era un bucle incondicional, es
decir, que slo poda ir de cierto punto a cierto punto, sin comprobaciones intermedias. Por eso se desarroll el
bucle while. Sin embargo, lenguajes ms avanzados como C crearon un for condicional ms potente. Aunque realiza
funciones semejantes, while tiene como ventaja que, al ser ms simple, tambin es ms rpido y ecaz en trminos
de rendimiento que for. Adems, algunas operaciones resultan simplicadas:
while (verdad) { if (verdad) document.write(Es verdad); verdad = !verdad; }
Este extrao ejemplo es signicativo por el uso de variables lgicas o booleanas. verdad es una variable lgica que slo
puede tener los valores true y false. Si verdad es true, el bucle se ejecutar. Al ejecutarse, tambin se comprobar
la condicion interna y se imprimir el mensaje Es verdad. Lo interesante viene despus. La expresin verdad =
!verdad signica hacer que verdad sea contrario a verdad". Si verdad era igual a true, ahora ser igual a false (el
operador !, como sabemos, es la negacin, y por lo tanto, cambiar el valor de la variable a su contrario).
while tiene una versin inversa: do-while. Este bucle tiene como diferencia respecto de while que, mientras que en
while la condicin se comprueba incluso antes de comenzar a ejecutar el bucle (lo que implica que si la condicin ya
fuese falsa antes de entrar en el bucle, ste no llegara a ejecutarse nunca), en do-while la condicin se comprueba a
14
CAPTULO 6. BUCLES
posteriori, con lo que tenemos la oportunidad de ejecutar el bucle al menos una vez. Esto tambin es una ventaja con
respecto a for, que en ese sentido se comporta igual que while. Veamos un ejemplo:
var x = 0; do { document.write(Mi nmero es el " + x + "<br>"); x++; } while (x < 10);
Captulo 7
Funciones
7.1 Qu son las funciones?
Las funciones son uno de los elementos ms importantes de cualquier lenguaje de programacin actual. De hecho,
Niklaus Wirth, uno de los ms importantes tericos de la programacin y creador del lenguaje Pascal entre otros,
lleg a indicar que todo programa no era ms que la suma de cdigo (rutinas, procedimientos o funciones, como se les
quiera llamar) y datos (variables, matrices, etc...). Sea como sea, las funciones tienen un papel estelar en el desarrollo
de aplicaciones en la actualidad.
Hasta ahora, hemos visto como realizar cdigo de una forma estructurada, con sentencias de control que nos permiten
dominar la ejecucin del mismo fcilmente. Pero si slo tenemos esto, solamente podremos manejar el cdigo de
forma lineal: ejecutaremos las lneas una a una, una detrs de la otra, hasta el nal del programa. Es ms, si quisiramos
usar un determinado cdigo varias veces en el mismo programa tendramos que repetir ese cdigo varias veces,
tenindolo que adaptar a cada situacin. Y qu ocurre si queremos reutilizar un cdigo en varios programas? Es un
problema que se resuelven gracias a las funciones.
Las funciones son trozos de cdigo que tienen un nombre y que podemos utilizar en cualquier parte de nuestro cdigo
con una llamada directa. Este es un buen ejemplo:
function datos_personales(nombre, apellidos, edad) { return Hola, " + nombre + " " + apellidos + ", tienes " + edad
+ " aos."; }
En este caso hemos denido una funcin que, usando los parmetros que le hemos pasado, los combina para formar
una cadena formateada, que devuelve gracias a la palabra reservada return. Y cmo podemos usar este cdigo?
alert(datos_personales('Pepito', 'Prez', 25));
De tal forma que primero ejecutaremos la funcin datos_personales con los parmetros pasados, y despus la funcin
alert, que nos permite mostrar una ventana con un mensaje en la pantalla, con el resultado devuelto por la funcin
que hemos creado. Este sera el cdigo completo del programa:
<html> <head> <title>cdigo de funcin</title> <script> function datos_personales(nombre, apellidos, edad) {
return 'Hola, ' + nombre + ' ' + apellidos + ', tienes ' + edad + ' aos.'; } </script> </head> <body> <script>
alert(datos_personales(Pepito, Perez, 25)); </script> </body> </html>
Los parmetros son un elemento importante en las funciones. Se trata de datos que podemos pasar a nuestras funciones
para que estas los procesen de alguna forma, lo cual dar como resultado o una salida en el navegador (texto o
ventanas), o bien un resultado que se puede usar cuando llamemos a la funcin. Cuando indiquemos parmetros,
deberemos indicar la lista completa de parmetros que vamos a usar en esa funcin. Al llamar a la funcin, deberemos
hacerlo con todos los parmetros indicados. De otra forma, se producira un error de ejecucin. Los parmetros se
convierten en variables de datos dentro de la funcin, de ah que podamos utilizarlas e incluso modicarlas.
Generalmente, las funciones se utilizan para realizar alguna operacin no visible (matemtica, de cadena de caracteres,
de objetos, etc...) que devuelve por medio de return, pero tambin se pueden visualizar elementos en el navegador
usando las funciones y objetos que ya incorpora JavaScript.
function suma(dato1, dato2) { return dato1 + dato2; }
Al utilizar esta funcin, podemos hacerlo de varias formas:
15
16
CAPTULO 7. FUNCIONES
17
function dev_true() { return true; } if (dev_true()) { alert(es true); } if (true) { alert(tambin es true); } if (1)
{ alert(este tambin es true); }
Por ltimo, veamos cmo salir de una funcin sin necesidad de devolver nada en cualquier momento:
function salir() { document.write(hola); document.write(que pasa); return; alert(adis); } salir();
En este ejemplo, la ltima linea dentro de la funcin (alert) no se ejecutar nunca porque hemos salido sin ms en la
linea anterior al ejecutarse la instruccin return.
Captulo 8
FuncionesJS
JavaScript contiene sus propias funciones que podemos utilizar en nuestros programas. Aunque algunas de estas
funciones podemos usarlas independientemente de sus correspondientes objetos, lo cierto es que todas las funciones
provienen de algn objeto especco. El objeto window representa a la ventana del navegador y es el objeto por
defecto. Esto quiere decir que podemos usar sus elementos (funciones, propiedades, objetos, etc...) sin necesidad de
llamar explcitamente al objeto window.
Ya conocemos alguna que otra funcin como length (de los objetos de matriz) o alert, que proviene del objeto window
y que muestra un mensaje en una ventana.
Otro objeto dependiente de window es document que contiene, entre otras cosas, funciones como write que nos
permite escribir texto en la pgina web.
A continuacin vamos a estudiar algunas posibilidades que nos aportan las funciones en JavaScript, ya que hay una
gran cantidad de ellas. Sin embargo, vamos a repasar las ms usadas para el desarrollo web en general.
19
Captulo 9
OOP
Dentro de los lenguajes actuales, que provienen en su mayora de los primeros lenguajes estructurados como ALGOL
o BCPL, la capacidad de crear funciones para reutilizarlas de diversas formas, ya sea dentro del mismo mdulo
del programa o en distintos mdulos, ha sido uno de los fundamentos de la programacin de sistemas informticos.
Sin embargo, este paradigma se quedaba corto para nuevas situaciones que iban surgiendo con el tiempo, como
la programacin de videojuegos o el 3D y la inteligencia articial. A nales de los aos 70 se comenz a teorizar
sobre lenguajes de programacin que utilizasen entidades independientes que fueran autocontenidas para realizar las
aplicaciones. Como ya dijimos anteriormente, un programa se compone de cdigo y datos. los objetos son unidades
que contienen su propio cdigo y datos para su propio auto-funcionamiento. Podemos decir que son programas dentro
de programas.
Dicho as, podemos darnos cuenta de que los objetos pueden ser utilizados como variables, para nuestro propio
uso. Pero no podemos denir variables de objeto sin poder darles una forma. La forma de los objetos son los datos
(propiedades) y cdigo (funciones) que contiene el objeto. A esto se le denomina clase de objeto. Para denir clases
en JavaScript, lo hacemos por medio de funciones, como esta:
function Persona(nombre) { this.nombre = nombre; this.color_pelo = 'negro'; this.peso = 75; this.altura = 165;
this.sexo = 'varn'; this.edad= 26; }
Vamos a jarnos bien como se estructura esta funcin. Se le llama constructor de la clase, y en ella denimos los
datos de la clase, los que vamos a poder utilizar al crear objetos con ella. Ntese el uso de la palabra reservada this.
Esta palabra sirve para identicar al objeto en si mismo dentro de la denicin de la clase. Cuando escribimos
this.peso = 75;
estamos creando la propiedad peso de la clase Persona. Cuando creamos una propiedad en el constructor y le
damos un valor, como en este caso, estamos asignndole un valor por defecto. Todos los objetos creados con este
constructor contendrn una propiedad peso con ese valor inicial, aunque luego podremos cambiarlo al usar el objeto.
Para denir un objeto de esta clase, slo tendramos que hacer esto:
var hombre = new Persona('Pepe');
Aqu hemos denido el objeto hombre, que contendr todas las propiedades denidas en la funcin-clase Persona.
Si queremos cambiar su valor, slo tenemos que hacer algo como esto:
hombre.peso = 80;
De esta forma, el dato denido para este objeto cambia. Pero si hemos denido ms objetos de tipo Persona, cada
uno de ellos contendr las mismas propiedades pero con valores distintos. Ningn objeto tiene el mismo valor que
otro objeto de la misma clase a no ser que nosotros se lo asignemos explcitamente.
var mujer = new Persona('Ana'); mujer.peso = 67; mujer.sexo = 'mujer';
En este caso hemos hecho lo mismo, pero le indicamos su propio peso, independiente del de la variable hombre. As,
podemos tener tantos objetos de la misma clase como queramos para realizar las operaciones que sean pertinentes.
Una ltima cosa sobre los constructores: como podemos ver, podemos pasarle parmetros, que podemos convertir en
los valores de las propiedades de los objetos de esa clase.
20
21
22
CAPTULO 9. OOP
CrearCapa() { try { // Esta es la manera correcta y estndar -aunque ms lenta y costosa- // de generar contenido mediante el DOM: // Objetos DOMElement necesarios: var body = document.getElementsByTagName('body').item(0);
// Tag <body> tambin se puede en forma de vector: //...agName('body')[0]; pero no es compatible con Opera. var
capa = document.createElement('div'); // Divisin al vuelo var texto = document.createTextNode(this.texto); // Texto contenido en div al vuelo // Establecer atributos de divisin: capa.setAttribute('id', this.id); capa.setAttribute('style',
'background-color:#f7f7f7; width:100px; border:#000000 2px solid;'); // Reconstruir el rbol DOM: capa.appendChild(texto);
body.appendChild(capa); } catch(e) { alert(e.name + " - " + e.message); } } } // ]]>
</script> </head> <body> <script type="text/javascript charset="utf-8">
// <![CDATA[ var capa = new CrearCapas('idCapanueva', 'Hola Mundo'); capa.CrearCapa(); // ]]>
</script> </body> </html>
El resultado del cdigo anterior es una pgina que por medio de JavaScript crea una divisin (div) y le asigna atributos
como ancho, alto, color, etc, y lo inserta dentro de la pgina al cargarse.
Captulo 10
ClasesJS
A continuacin vamos a estudiar algunos de los objetos y clases ms utilizados en JavaScript.
<html> <body> <p> Nota: Si no usamos funcin de comparacin para denir el orden, la matriz se ordenar siempre
alfabticamente. 500 vendr antes que 7, pero en una ordenacin numrica, 7 viene antes que 500. Este ejemplo
muestra como usar la funcion de comparacin - que ordenar correctamente los elementos tanto en una matriz numrica como de cadenas. </p> <script type="text/javascript"> array1 = new Array(Rojo,"Verde,"Azul); array2
= new Array(70,"9,"800); array3 = new Array(50,10,2,300); array4 = new Array(70,"8,"850,30,10,5,400);
function compareNum (a, b) { return a-b; } document.write(Ordenado: " + array1.sort()); document.write("<br><br>");
document.write(Ordenado sin compareNum: " + array2.sort()); document.write("<br>"); document.write(Ordenado
con compareNum: " + array2.sort(compareNum)); document.write("<br><br>"); document.write(Ordenado sin
compareNum: " + array3.sort()); document.write("<br>"); document.write(Ordenado con compareNum: " + array3.sort(compareNum)
document.write("<br><br>"); document.write(Ordenado sin compareNum: " + array4.sort()); document.write("<br>");
document.write(Ordenado con compareNum: " + array4.sort(compareNum)); </script> </body> </html>
Como podemos apreciar en el cdigo, slo las llamadas a sort que tienen como parmetro la funcin de comparacin
compareNum han sido ordenadas numricamente.
23
24
25
26
slice()
small()
split()
strike()
sub()
substr()
substring()
sup()
toLocaleLowerCase()
toLocaleUpperCase()
toLowerCase()
toString()
toUpperCase()
valueOf()
Captulo 11
Formularios
Una de las utilidades ms interesantes de JavaScript es la posibilidad de comprobar y gestionar formularios de forma
que podamos incluso evitar que se enve un formulario si los datos no son correctos. Primero estudiaremos como
controlar la gestin y el envo de datos, y despus nos sumergiremos en la comprobacin propiamente dicha de los
datos.
28
devolver false, lo que bloquear el envo del formulario al servidor. Slo si se superan las dos pruebas que ponemos
a los datos, se devolver true y el formulario se enviar. El cdigo completo para este programa sera:
<html> <head> <script language="javascript"> function comprobar() { var nombre = document.formu.nombre.value;
var edad = document.formu.edad.value; if (nombre.length > 30) { alert(Tu nombre es demasiado grande. Redcelo.); return false; } if (edad >= 20 && edad <= 40) { alert(Si tienes entre 20 y 40 aos, no puedes usar este
programa.); return false; } return true; } </script> </head> <body> <form action="prog.php method="post
name="formu id="formu onsubmit="return comprobar()"> Tu nombre: <input type="text name="nombre value=""><br> Tu edad: <input type="text name="edad value="" size="2 maxlength="2"><br> <input type="submit
value=" Enviar "> </form> </body> </html>
Vamos a estudiar una serie de casos particulares que se alejan de alguna forma de la forma de obtener valores que
hemos visto en el ejemplo anterior, o alternativas sobre como comprobar los datos. En el siguiente ejemplo vemos
como capturar el contenido de una serie de radios, ya que podemos usar una funcin especca para comprobar
que efectivamente hemos pulsado uno de los radios":
<html> <head> <script language="javascript"> function check(browser) { document.formu.respuesta.value = browser; } </script> </head> <body> <form name="formu id="formu"> Selecciona tu navegador favorito:<br><br> <input type="radio name="browser onclick="check(this.value)" value="Internet Explorer"> Internet Explorer<br>
<input type="radio name="browser onclick="check(this.value)" value="Netscape"> Netscape<br> <input type="radio
name="browser onclick="check(this.value)" value="Opera"> Opera<br> <br> <input type="text name="respuesta
size="20"> </form> </body> </html>
Fijmonos en las etiquetas <input>: el evento onclick contiene una llamada a la funcin check, cuyo parmetro es
una cadena de texto. En este caso la cadena de texto es conseguida por medio de la expresion this.value. Por
qu this.value? Ya conocemos lo que signica this, es la llamada al propio objeto, en este caso el radio, y con esta
expresin leemos el valor de la etiqueta <input>. Con el objeto por defecto this, podemos acceder a cualquer propiedad
y funcin de la etiqueta en la que nos encontramos en sus cdigos de eventos.
En el prximo ejemplo veremos como procesar los checkboxes de un formulario. Debemos tener en cuenta que
cada grupo de checkboxes pueden tener el mismo nombre, por lo que el acceso a un grupo de estas etiquetas debe
ser realizado por medio de una matriz, como veremos ahora. Adems, no accederemos a la propiedad value para
determinar cual est pulsada, si no a la propiedad checked, que es un valor booleano que nos indicar si efectivamente
un checkbox concreto est pulsado o no.
<html> <head> <script type="text/javascript"> function check() { cafe=document.formu.cafe; respuesta=document.formu.respuesta;
txt=""; for (i=0;i<cafe.length;++i) { if (cafe[i].checked) { txt=txt + cafe[i].value + " "; } } respuesta.value="Tu
quieres caf con " + txt; } </script> </head> <body> <form name="formu id="formu"> Cmo quieres tu caf?<br><br> <input type="checkbox name="cafe value="crema">Con crema<br> <input type="checkbox
name="cafe value="azcar">Con azcar<br> <br> <input type="button name="test onclick="check()"
value="Enviar pedido"> <br><br> <input type="text name="respuesta size="50"> </form> </body>
</html>
Como podemos ver, hay varias cosas a tener consideracin: los checkboxes, al tener el mismo nombre (podran tenerlo
distinto, pero este ejemplo nos permite ver esta posibilidad), se agrupan en forma de matriz, y por lo tanto, debemos
recorrer la lista de controles para acceder a sus contenidos. En nuestro caso, accedemos a la propiedad checked, que
nos permite saber si el checkbox est pulsado (true) o no (false). En la variable txt acumulamos los valores de los
checkboxes (a los que accedemos por medio del correspondiente ndice, como ya sabemos), y despus mostramos el
resultado en la linea de texto que hay ms abajo. Al introducir el texto en la propiedad value, cambiamos tambin el
contenido del campo de texto.
En el siguiente ejemplo veremos como averiguar el dato pulsado en una lista de datos:
29
nos permite acceder a una de las opciones (es una matriz) de la lista de datos. En este caso, como las opciones no
tienen valor, podemos acceder a la cadena de caracteres de la opcin por medio de la propiedad text. En concreto,
podemos conocer qu elemento se ha seleccionado por medio de la propiedad selectedIndex del control de lista.
Slo un detalle ms a tener en cuenta: por un defecto de los navegadores, no es posible elegir sin ms el elemento
actualmente seleccionado en la lista, ya que no producir ningn evento. Hay que tener esto en consideracin para
evitar posibles problemas a la hora de trabajar con las listas. Un truco para subsanar este inconveniente es poner un
primer option en blanco (<option> </option>) que ser el que aparezca al cargarse el select.
Captulo 12
30
31
Captulo 13
Operadores en JavaScript
Los operadores son uno de los elementos fundamentales en cualquier lenguaje de programacin, ya que son los que
nos permiten trabajar con variables y datos. A continuacin vamos a estudiar los distintos operadores divididos en
categoras:
Operadores aritmticos:
Operadores de asignacin:
Operadores condicionales (comparativos):
Operadores lgicos:
Suma y Resta Tipogrca
La diferencia en el uso de la suma y resta tipogrca radica en el momento en que se realiza la operacin. Cuando los
smbolos preceden a la variable (ej: ++a; --a;) la operacin se realiza antes de ejecutar el resto de las operaciones en
la linea. Cuando la variable precede a los smbolos (ej: a++; a--;) la operacin se realiza despues de ejecutar el resto
de las operaciones en la linea. En caso de que la linea de cdigo no contenga ninguna operacin extra el resultado
ser el mismo. Aqu algunos ejemplos para mostrar las diferencias:
var a=3; var b=7; a++; --b; //a=4, b=6 var c = b - a++; //Resultados: c = 1 (resta), luego a = 5 (++) //a=5, b=6, c=1 c
= --b / a++; //Resultados: b = 5 (--), luego c = 1 (divisin), luego a = 6
32
Captulo 14
Ejemplos de cdigo
En este apndice vamos a estudiar algunos ejemplos de cdigo JavaScript que podemos adaptar a nuestras pginas.
En estos ejemplos aparecern tambin objetos y clases nuevas que no hemos visto a lo largo del curso, para extender
el conocimiento que ya tenemos del cdigo de scripts.
14.1 Caso 1: Cmo conseguir que un enlace gane o pierda el foco de entrada.
<html> <head> <style type="text/css"> a:active {color:blue} </style> <script type="text/javascript"> function getfocus() { document.getElementById('w3s).focus(); } function losefocus() { document.getElementById('w3s).blur(); }
</script> </head> <body> <a id="w3s href="http://www.google.com">Visita Google.com</a><br><br>//solo por
presentacion <form> <input type="button onclick="getfocus()" value="Coge el foco"> <input type="button onclick="losefocus()" value="Pierde el foco"> </form> </body> </html>
getElementById es una funcin de document que permite llamar a un objeto concreto de la pgina. Esta es la forma
normal de acceder a los elementos de la pgina, aunque como en el caso de los formularios, tambin es posible acceder
a algunos elementos directamente usando sus nombres como propiedades de objetos. <html>
<head> <script type="text/javascript"> function setfocus() { document.forms[0].txt.select(); document.forms[0].txt.focus();
} </script> </head> <body> <form> <input type="text name="txt size="30 value="Hola mundo!"> <input type="button value="Selecciona texto onclick="setfocus()"> </form> </body> </html>
34
En este ejemplo podemos ver otra forma de utilizar los formularios en el cdigo JavaScript.
<html> <head> <script language="javascript"> var intval="" function start_Int() { if(intval=="") { intval=window.setInterval(start_cloc
} else { stop_Int(); } } function stop_Int() { if(intval!="") { window.clearInterval(intval); intval=""; document.formu.tiempo.value="Tiem
detenido"; } } function start_clock() { var d=new Date(); // Creamos una variable d de tipo Date. var sw="am"; var
h=d.getHours(); // Asignamos a h la horas obtenidas de d. var m=d.getMinutes() + ""; var s=d.getSeconds() + "";
if(h>12) { h-=12; sw="pm"; } if(m.length==1) { m="0 + m; } if(s.length==1) { s="0 + s; } document.formu.tiempo.value=h
+ ":" + m + ":" + s + " " + sw; } </script> </head> <body> <form id="formu name="formu"> <input type="text
name="tiempo value="Tiempo parado"> </form> <input type="button value="Empezar onclick="start_Int()">
<input type="button value="Parar onclick="stop_Int()"> <p>Este ejemplo actualiza el contenido del cuadro
de texto cada segundo. Pulsa Empezar para iniciar la funcin setInterval. Pulsa Parar para detener el tiempo con
la funcin clearInterval.</p> </body> </html>
35
Estdiese bien este ejemplo. La variable intval contiene un valor que setInterval genera, y con el que podremos detener
el intervalo usndolo en la llamada a clearInterval. Especialmente interesante es la funcin start_clock, que formatea
la hora para su visualizacin.
<html> <head> <title>Proforma de Computadora</title> <script> function relojFecha(){ var mydate=new Date();var
year=mydate.getYear(); if (year < 1000)year+=1900; var day=mydate.getDay(); var month=mydate.getMonth(); var
daym=mydate.getDate(); if (daym<10)daym="0"+daym; var dayarray=new Array(Domingo,"Lunes,"Martes,"Miercoles,"Jueves,"
var montharray=new Array(Enero,"Febrero,"Marzo,"Abril,"Mayo,"Junio,"Julio,"Agosto, Septiembre,"Octubre,"Noviembre
var horas = mydate.getHours(); horas = (horas<10)?"0"+horas:horas; var minutos = mydate.getMinutes(); minutos =
(minutos<10)?"0"+minutos:minutos; var segundos = mydate.getSeconds(); segundos = (segundos<10)?"0"+segundos:
segundos; document.getElementById(idReloj).innerHTML = "<"+"small><"+"font color='000000' face='Verdana'>"+
dayarray[day]+" "+daym+" de "+montharray[month]+" de "+ year+" "+horas+":"+minutos+":"+segundos+"<"+"/font><"+"/small>";
setTimeout('relojFecha()',1000); } </script> </head> <body onload="relojFecha()"> <p id="idReloj"></p>
</body> </html>
Tngase en cuenta que, a diferencia del anterior ejemplo, el reloj est orientado a usar setTimeout, que permite lanzar
la funcin relojFecha cada segundo. Por ello, no se puede parar y se lanza usando el evento onload de body.
36
Texto
Programacin en JavaScript Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript?oldid=281326 Colaboradores: ManuelGR, Caiser~eswikibooks, Lain~eswikibooks, Jorolo, Ciencia Al Poder, Juanromerocruz, Kausario, Swazmo, Juan.corrales,
lvaro M, Magister Mathematicae, Rjarl, Oleinad, Ramac, MABot, Drinibot, Ortisa, CarsracBot, Earizon, Mjbmrbot, Raulbcneo, Tegel,
Polyglottos, Matiia, Syum90, Pablo Ivn G. Soto, Julian99david, Viartola y Annimos: 19
Programacin en JavaScript/Introduccin Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Introducci%
C3%B3n?oldid=175589 Colaboradores: Jag2kn, Ciencia Al Poder, Magister Mathematicae, Joanumbert~eswikibooks, Drinibot, JackPotte, Ruy Pugliesi, Raulbcneo y Annimos: 4
Programacin en JavaScript/Variables Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Variables?oldid=
256981 Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, NeoDalembert, Magister Mathematicae, Joanumbert~eswikibooks, Kved, Josemiguel93, JackPotte, Raulbcneo, Syum90 y Annimos: 2
Programacin en JavaScript/Control Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Control?oldid=175592
Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, Magister Mathematicae, JackPotte, Raulbcneo y Annimos: 1
Programacin en JavaScript/Control/Condicionales Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Control/
Condicionales?oldid=174806 Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, Magister Mathematicae, Joanumbert~eswikibooks, Josemiguel93, Raulbcneo y Annimos: 3
Programacin en JavaScript/Control/Bucles Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Control/Bucles?
oldid=259149 Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, NeoDalembert, Juan.corrales, Magister Mathematicae, Joanumbert~eswikibooks, JackPotte, Earizon, Raulbcneo, Syum90 y Annimos: 5
Programacin en JavaScript/Funciones Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Funciones?oldid=
276308 Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, Ing.jorge.lam, Magister Mathematicae, JackPotte,
Raulbcneo, Syum90 y Annimos: 5
Programacin en JavaScript/FuncionesJS Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/FuncionesJS?
oldid=222952 Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, Magister Mathematicae, Jarisleif, Morza, Raulbcneo y Annimos: 4
Programacin en JavaScript/OOP Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/OOP?oldid=171365
Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, Valenluis, Magister Mathematicae, Covi, Suzuma, Drinibot y
Annimos: 3
Programacin en JavaScript/ClasesJS Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/ClasesJS?oldid=
197622 Colaboradores: Caiser~eswikibooks, Lain~eswikibooks, Ciencia Al Poder, Magister Mathematicae, Antbiel, JackPotte, Raulbcneo, Ralgisbot y Annimos: 1
Programacin en JavaScript/Formularios Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Formularios?
oldid=286206 Colaboradores: Lain~eswikibooks, Ciencia Al Poder, Magister Mathematicae, Oleinad, Defender, Raulbcneo, LlamaAl y
Annimos: 5
Programacin en JavaScript/Cmo escribir cdigo en JavaScript Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_
JavaScript/C%C3%B3mo_escribir_c%C3%B3digo_en_JavaScript?oldid=171382 Colaboradores: Ciencia Al Poder, Magister Mathematicae, MarcoAurelio, Earizon y Annimos: 5
Programacin en JavaScript/Operadores en JavaScript Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/
Operadores_en_JavaScript?oldid=171375 Colaboradores: Ciencia Al Poder, Magister Mathematicae, DarkInVader~eswikibooks y Annimos: 1
Programacin en JavaScript/Ejemplos de cdigo Fuente: https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_JavaScript/Ejemplos_
de_c%C3%B3digo?oldid=219214 Colaboradores: Ciencia Al Poder, Magister Mathematicae, Rjarl, Kved, Wutsje, Earizon, Mecamtico
y Annimos: 17
14.12.2
Imgenes
14.12.3
Licencia de contenido