HerramientasEn otros idiomas
|
JavaScript
JavaScript es un lenguaje de programación interpretado, es decir, que no requiere compilación, utilizado principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C. Al igual que Java, JavaScript es un lenguaje orientado a objetos propiamente dicho, ya que dispone de Herencia, si bien esta se realiza siguiendo el paradigma de programación basada en prototipos, ya que las nuevas clases se generan clonando las clases base (prototipos) y extendiendo su funcionalidad. Todos los navegadores modernos interpretan el código JavaScript integrado dentro de las páginas web. Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del DOM. El lenguaje fue inventado por Brendan Eich en la empresa Netscape Communications, que es la que desarrolló los primeros navegadores web comerciales. Apareció por primera vez en el producto de Netscape llamado Netscape Navigator 2.0. Tradicionalmente, se venía utilizando en páginas web HTML, para realizar tareas y operaciones en el marco de la aplicación únicamente cliente, sin acceso a funciones del servidor. JavaScript se ejecuta en el agente de usuario al mismo tiempo que las sentencias van descargándose junto con el código HTML. Los autores inicialmente lo llamaron Mocha y más tarde LiveScript pero fue rebautizado como JavaScript en un anuncio conjunto entre Sun Microsystems y Netscape, el 4 de diciembre de 1995. En 1997 los autores propusieron JavaScript para que fuera adoptado como estándar de la European Computer Manufacturers' Association ECMA, que a pesar de su nombre no es europeo sino internacional, con sede en Ginebra. En junio de 1997 fue adoptado como un estándar ECMA, con el nombre de ECMAScript. Poco después también lo fue como un estándar ISO. JScript es la implementación de ECMAScript de Microsoft, muy similar al JavaScript de Netscape, pero con ciertas diferencias en el modelo de objetos del navegador que hacen a ambas versiones con frecuencia incompatibles. Para evitar estas incompatibilidades, el World Wide Web Consortium diseñó el estándar Document Object Model (DOM, ó Modelo de Objetos del Documento en castellano), que incorporan Konqueror, las versiones 6 de Internet Explorer y Netscape Navigator, Opera versión 7, y Mozilla desde su primera versión.
[editar] Dónde y cómo incluir JavaScript en un documentoJavascript se puede incluir en cualquier documento HTML, o todo aquel que termine traduciéndose en HTML en el navegador del cliente; ya sea PHP, ASP, SVG... El código va inscrito dentro de los elementos HTML <script type="text/javascript"> // código JavaScript </script> Muchos incluyen comentarios HTML para que navegadores antiguos no interpreten el código JavaScript, sin embargo ningún navegador existente hoy en día necesita esta práctica. Para incluir un archivo externo, bastará con escribir: <script type="text/javascript" src="[URL]"></script> Siendo [URL] el url relativo o absoluto apuntando a un archivo con código JavaScript, el cual tendrá extensión .JS. [editar] Sintaxis del Lenguaje[editar] Notas previas[editar] Case sensitiveJavaScript es case sensitive (en español, que diferencia entre mayúsculas y minúsculas). Por tanto, una variable llamada DUMMY es distinta a otra llamada dummy, asi como a cualquiera de sus variantes: DuMmY,DUmmY,etc. [editar] ComentariosLa sintaxis de los comentarios es la misma de C y C++, comentarios de bloque delimitados por «/*» y «*/», y comentarios de línea delimitados por «//» y el fin de línea. [editar] Elementos[editar] Variables y Tipos de DatosSon espacios de memoria dentro del navegador del cliente a los que se les asigna un nombre de acceso para todo el programa. Se pueden eliminar con el operador delete. Únicamente se pueden borrar las variables declaradas implícitamente (sin el operador var delante). Están asociados a un valor, un objeto o a una función. Hay varios tipos de Datos: string, number, object, function, array, boolean. [editar] OperadoresExisten de varios tipos: asignación, aritméticos, lógicos, especiales y alfanuméricos (este último fusiona numéricos y alfabéticos) [editar] Operador de asignaciónEl operador de asignación en el lenguaje JavaScript es el símbolo igual, =. [editar] Operadores aritméticosLos aritméticos son los matemáticos: suma(+), resta(-), multiplicación(*), división(/), y resto de división o módulo (%). El operador + también puede ser utilizado para concatenar strings. Su utilización puede ser:
En el primer caso asignamos a la variable variable el resultado de la operación; y en el segundo caso se aplica la operación directamente a la variable variable modificando su valor primitivo, equivaldría a: variable = variable operador valor; También existen los aritméticos unitarios que no necesitan de otro valor para actuar a una variable como los aritméticos normales. Son ++, -- y -. ++ Conseguirá sumar una unidad a la variable a la que acompaña. -- Conseguirá el efecto inverso, restará una unidad a la variable que acompaña. - Es el operador unitario negativo, cambiará el signo de la variable a la que acompaña. Advertencia sobre los operadores aritméticos unitarios ++ y --: Un ++ antes de una variable aumentará su valor en una unidad y su aplicación será con ese nuevo valor. Un ++ después de la variable aumentará el valor de la variable después de su aplicación, es decir, se aplicará con el valor antiguo y después se agregará una unidad. Lo mismo ocurre con --. Ejemplo:
Otorgará un valor inicial a la variable x de 10 y a la y de 10. Pero después a x se le suma una unidad, luego x tendrá el valor 11 al terminar la ejecución. Ejemplo2:
Aquí a x le otorgamos el valor 10, después le sumamos una unidad y se lo asignamos a y, por lo que las dos variables valdrán 11. [editar] Operadores relacionalesLos relacionales son los que comparan los valores de las variables unos con otros. Devuelven un true o un false dependiendo si son verdaderos o falsos. Son
[editar] Operadores lógicos y de valoraciónÉstos agrupan conjuntos de expresiones. Son los siguientes:
Existen también operadores de asignación combinados con operadores lógicos (&=, |=, ^=). Además de los operadores de valoración, también existen operadores que trabajan a nivel de bits:
El operador AND bit a bit se puede concebir como un modo para cancelar un bit llevándolo a 0. El operador OR bit a bit es el contrario de AND y puede utilizarse para impostar en 1 un bit, mientras que el operador XOR puede utilizarse para impostar en 1 un bit si los bit comparados son distintos. Los operadores de shift corren todos los bit de una variable hacia la derecha o hacia la izquierda un número determinado de posiciones y los nuevos bit que se crean se impostan en 1, mientras que los bit que salen se pierden (excepto los del signo). Las operaciones de shift son útiles para descifrar el input de un dispositivo externo, como un conversor analógico/digital, y permiten realizar operaciones rapidísimas entre enteros en cuanto el hecho de correrse a la derecha divide un número por dos, mientras que correrse a la izquierda lo multiplica también por dos. El operador de complemento a uno, por su parte, invierte el estado de los bit, por lo que todos los 1 se cambiarán en 0, y viceversa. Naturalmente, dos operaciones de complemento en el mismo número producen como resultado el número original. [editar] Operadores especiales1) Operador condicional (?:) El operador condicional es el único operador de JavaScript que tiene tres operandos. La expresión toma un valor u otro dependiendo de la condición:
Ejemplo:
2) Operador coma (,) Sirve para concatenar expresiones. Es útil en bucles for. Ejemplo:
3) Operador delete Borra un objeto, una propiedad de un objeto, o un elemento de un array dado su índice. La sintaxis es:
El operador delete no se puede usar con las variables declaradas explícitamente con la sentencia var. Si el delete tiene éxito devolverá un true, y además cambiará el valor de lo que estemos utilizando a undefined. Para eliminar un elemento de un array, se puede usar
El objeto pasará a no tener valor, y el programa lo tratará como undefined, tal y como si utilizamos una elemento de un array más alto que la propia longitud del array. Para entregarle explícitamente el valor undefined debemos otorgárselo con la palabra reservada:
4) Operador in El operador in devuelve true si la propiedad esta especificada en el objeto indicado:
También puede comprobar si un índice de un array está dentro de los valores posibles del array (entre 0 y array.length-1, a no ser que la hayamos eliminado con el operador delete). 5) Operador instanceof Este operador devuelve true si el objeto indicado es una instancia de la clase que se especifica:
Siendo la clase un tipo de objeto, como Date, Array o un objeto creado por nosotros mismos. 6) Operador new new se utiliza para crear nuevas instancias de objetos, ya sea de los predefinidos o de los creados por nosotros.
7) Operador this El operador this se utiliza más que nada dentro de la definición de un objeto para referirse a una instancia de un objeto. Sirve para declarar propiedades y métodos del propio objeto que estarán disponibles a través de la instancia. 8) Operador typeof Se puede usar de las siguientes maneras
Devuelve un string con el tipo de variable que resulte ser: function, string, object, boolean... 9) Operador void Puede verse en enlaces sobre todo. La expresión que le acompaña es evaluada, pero no devuelve ningún valor. Por ejemplo:
Al pulsar en el enlace veremos que no resulta ninguna acción. Sin embargo:
Ejecuta la orden de submit() enviando el formulario a donde hubiere de enviarlo. La expresión es evaluada pero no cargada en lugar del documento actual. [editar] ObjetosAunque podemos crear nuestros propios objetos, JavaScript contiene una lista de tipos predefinidos de objetos:
[editar] El objeto ArrayEl objeto Array se refiere a una lista de datos, sean del tipo que sean. Es útil para guardar un conjunto de datos ordenados que tienen relación entre sí. Hay varias maneras de crearlos, y de asignar valor a sus índices. Además se pueden anidar creando estructuras de árbol complejas. Para crear arrays se puede hacer de varias maneras:
Para acceder a un elemento del array podemos hacerlo así:
Donde índice será el número de elemento al que queramos acceder. Hay que tener en cuenta que los elementos empiezan a contarse desde cero, es decir, el primer elemento es nombre_array[0], el segundo nombre_array[1] y así sucesivamente. Los arrays no tienen porqué ser de un sólo tipo; un array con muchos valores de diferentes tipos sería igualmente válido:
Además un array puede almacenar muchos elementos. Si creamos un elemento en el puesto 87 se crearán automáticamente todos los valores anteriores que no estén definidos con un valor vacío. Se puede extender todo lo que se quiera, pero no se puede empequeñecer ni con el delete, así que hay que procurar hacerlos compactos para ahorrar memoria. 1) Cómo anidar arrays Un array puede estar contenido dentro de otro array, es decir, puede ser un elemento de otro array ajeno sin ningún problema:
El elemento 4 de array1 es otro array. Para acceder al elemento "pera" haremos:
Las dos opciones son válidas. 2) Propiedades de los arrays
Los arrays tienen como propiedad principal el length.
La propiedad length de un array devuelve un entero con el número de elementos que contiene el array. Nótese que el número de elementos es el índice del último elemento más una unidad, y no el índice del último elemento.
La propiedad prototype la tienen muchos objetos en JavaScript. Sirve para crear métodos y propiedades de los arrays genéricamente. Por si el lenguaje se nos queda corto. Podríamos implementar un método inexistente y propio para, por ejemplo, alertar el contenido de un array: var array1=new Array("a","b","c","d"); var array2=new Array("plátano","pera","manzana","fresa"); array1[4]=array2; Array.prototype.alertar=function() { alert(this.toString()); } array1.alertar(); array2.alertar(); Así, genéricamente, todos los objetos Array de nuestro script estarían dotados del método alertar(). 3) Métodos de los arrays
var miArray=new Array("plátano","pera","manzana","fresa"); document.write( miArray.join(" y ") ); //platano y pera y manzana y fresa
var miArray=new Array("plátano","pera","manzana","fresa"); var str=miArray.toString(); //platano, pera, manzana, fresa
var miArray=new Array("plátano","pera","manzana","fresa"); var long1=miArray.length; // long1=4 var ultimo=miArray.pop(); // ultimo="fresa" var long2=miArray.length; // long2=3
var miArray=new Array("plátano","pera","manzana","fresa"); var long1=miArray.length; // long1=4 var primero=miArray.shift(); // primero="plátano" var long2=miArray.length; // long2=3
var miArray=new Array("plátano","pera","manzana","fresa"); var long1=miArray.length; // long1=4 var nuevaLong=miArray.push("sandía","melon","kiwi"); //nuevaLong=7 var long2=miArray.length; // long2=7
var miArray=new Array("plátano","pera","manzana","fresa"); var long1=miArray.length; // long1=4 var nuevaLong=miArray.unshift("sandía","melon","kiwi"); //nuevaLong=7 var long2=miArray.length; // long2=7
var miArray=new Array("plátano","pera","manzana","fresa"); var miArrayAlReves=miArray.reverse(); // miArrayAlReves=["fresa","manzana","pera","plátano"];
var miArray=new Array("plátano","pera","manzana","fresa","uva","sandía","melon","kiwi"); var miArray2=miArray.slice(2,5); //manzana,fresa, uva
var miArray=new Array("plátano","pera","manzana","fresa","uva","sandía","melon","kiwi"); miArray.splice(0,0,"naranja","mandarina","pomelo"); // miArray=naranja, mandarina, pomelo, plátano, pera, manzana, fresa, uva, sandía, melon, kiwi var elementoPera=miArray.splice(4,1); // elementoPera=pera //miArray=naranja, mandarina, pomelo, plátano, manzana, fresa, uva, sandía, melon, kiwi var fresa_uva_sandia=miArray.splice(5,3); // fresa_uva_sandia=fresa, uva, sandía //miArray=naranja, mandarina, pomelo, plátano, manzana, melon, kiwi miArray.splice(2,3,"lenguado","merluza","sardina","caballa"); //miArray=naranja, mandarina, lenguado, merluza, sardina, caballa, melon, kiwi
Para ordenar elementos existen otros algoritmos, algunos más legibles otros más eficaces: El ordenamiento por mezcla, ordenamiento de burbuja, ordenamiento Shell y el ordenamiento quicksort son algunos de ellos. [editar] El objeto BooleanEl objeto Boolean tiene dos valores posibles, true o false. Estos valores se pueden operar con los Operadores de relación. Nos sirven para comprender las expresiones que se evalúan como boleanas, como las que puede haber entre los paréntesis de un if o de un while... Al fin y al cabo una expresión boleana. Siempre podemos crear una expresión boleana y asignársela a una variable con el constructor: var a = new Boolean(''expresión''); Donde expresión determinara un valor true o false para la variable a. Toda expresión que sea una variable vacía, un string vacío, un null, un undefined, un número igual a 0, una referencia a un objeto del documento que no exista... etc darán como resultado un boleano false. En caso contrario, un string, un número darán resultado true. //Valores que dan a la variable a un valor false a = new Boolean(); a = new Boolean(0); a = new Boolean(""); a = new Boolean(document.getElementById("no_existo")); a = new Boolean(undefined); a = new Boolean(null); a = new Boolean(false); //Valores que dan a la variable a un valor true a = new Boolean(document.getElementById("existo")); a = new Boolean(-4); a = new Boolean(true); [editar] El objeto DateEl objeto Date almacena una fecha de la que es posible extraer datos concretos. Incluso existen funciones creadas por desarrolladores para operar con fechas, ya que predeterminadamente JavaScript no las implementa, al contrario que PHP. [editar] El objeto FunctionEl objeto Function se refiere a un "subprograma" dentro del propio script. Es un conjunto de sentencias que se utilizan básicamente para reutilizar código. Este objeto se asemeja a las funciones en otros lenguajes como Java. [editar] El objeto ImageEl objeto Image contiene una imagen. [editar] El objeto NumberEl objeto Number se refiere a una variable numérica. [editar] El objeto ObjectEl Object de por sí es un objeto creado por nosotros, o un objeto diferente pudiendo ser este un objeto del DOM. [editar] El objeto OptionOption se refiere a un elemento HTML que se incluye dentro de los [editar] El objeto RegExpEl objeto RegExp es una Expresión regular. Su sintaxis es universal, se explaya extensamente en dicho artículo. [editar] El objeto StringEl objeto String es una cadena de caracteres. En JavaScript no existen Char, por lo que un solo carácter será del tipo String. [editar] Estructuras de Control[editar] if...else...If es una sentencia de control que permite a JavaScript hacer decisiones, esto quiere decir que ejecutará sentencias condicionalmente. Sintaxis: if (condición) { expresión_1; }else { expresión_2; } La condición es evaluada y si el resultado es verdadero, la expresión_1 se ejecuta. Si el resultado de la condición_1 es falso, la expresión_1 no se ejecuta y se ejecuta la expresión_2. Un sinónimo del código anterior, sería el siguiente: (condición)?(expresión_1):(expresión_2); [editar] Bucle Whilewhile (condición) { ''sentencias'' } Mientras la condición sea cierta se ejecutan las sentencias. [editar] do...while...do { ''sentencias'' } while (condición); Se ejecutan primero las sentencias y luego se evalúa la condición. Mientras la condición sea cierta se seguirán ejecutando las sentencias. [editar] Bucle forfor ([variables iniciales]; [condición de repetición]; [expresión de modificación]) { ''sentencias'' } Primero se ejecuta [variables iniciales], una lista de variables (o una sola) separadas por comas con sus valores correspondientes. Después si la [condición de repetición] es verdadera se ejecuta sentencias, y después se evalúa [expresión de modificación], la cual suele variar el valor de una de las variables definidas en [variables iniciales]. Se repite el bucle verificación de [condición de repetición], ejecución de sentencias y [expresión de modificación] indefinidamente hasta que [condición de repetición] sea falsa. [editar] Bucle for...infor (variable in objeto) { ''sentencias'' } Para cada uno de los valores del objeto se ejecutan las sentencias. Útil para recorrer arrays. [editar] Declaración switchswitch( expresion ){ case valor1 : //sentencias; break; case valor2 : //sentencias; break; ... default : //sentencias; break; } En expresión se da una variable o una condición y en cada case el valor que puede tomar esa variable o expresión. En caso de coincidir con algúno se ejecutan las sentencias dentro de ese case hasta topar con un break. Si la expresion no coincide con ningún valor se ejecuta el código en la sección default. [editar] Véase también[editar] Enlaces externos
|