Curso de Programación Web
3.5/5
()
Información de este libro electrónico
En este curso aprenderá todo lo necesario para poder realizar las principales tareas de programación en sus desarrollos web.
Este curso está orientado principalmente al uso de JavaScript, Ajax, jQuery y del Framework Backbone, por considerar que son los principales lenguajes de programación que intervienen en la actualidad en el desarrollo de las principales funciones de una página web, logrando efectos y ajustes que serían imposibles de realizar con otros lenguajes de programación tales como PHP y ASP.
Alberto Ayoze Castillo
Este Curso ha sido elaborado por Alberto Ayoze Castillo, analista de programación Web desde el año 2004, jefe de desarrollo de proyectos Web desde el año 2008, consultor para grandes empresas sobre el desarrollo Web y el impacto en la lógica del negocio empresarial desde el año 2011, y formador de analistas de desarrollo Web e instructor de formación online desde el año 2014.
Relacionado con Curso de Programación Web
Libros electrónicos relacionados
Aprende Programación Web con PHP y MySQL Calificación: 4 de 5 estrellas4/5Curso de Programación y Análisis de Software Calificación: 4 de 5 estrellas4/5Curso de Programación de Apps. Android y iPhone Calificación: 5 de 5 estrellas5/5HTML5 Avanzado Calificación: 0 de 5 estrellas0 calificacionesAprender Javascript Avanzado con 100 ejercicios prácticos Calificación: 5 de 5 estrellas5/5Desarrollo Web en Java Calificación: 3 de 5 estrellas3/5Introducción a PHP Calificación: 0 de 5 estrellas0 calificacionesDiseño Web con CSS Calificación: 5 de 5 estrellas5/5Aprende a Programar ASP .NET y C# - Segunda Edición Calificación: 0 de 5 estrellas0 calificacionesHTML, CSS, Bootstrap, Php, Javascript y MySql: Todo lo que necesitas saber para crear un sitio dinámico Calificación: 0 de 5 estrellas0 calificacionesAprender HTML5, CSS3 y Javascript con 100 ejerecios Calificación: 5 de 5 estrellas5/5Conexión SQL SERVER & C# (Manual para principiantes) Calificación: 1 de 5 estrellas1/5Aprender PHP, MySQL y JavaScript Calificación: 5 de 5 estrellas5/5Curso de Programación con Java - 2ª Edición Calificación: 5 de 5 estrellas5/5JavaScript: Guía completa Calificación: 4 de 5 estrellas4/5Aprende a Programar en ASP .NET y C# Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación con Java Calificación: 4 de 5 estrellas4/5Aprende a Programar con Java Calificación: 4 de 5 estrellas4/5Guía de HTML5, CSS3 y Javascript. La Web 2.0 Calificación: 4 de 5 estrellas4/5Aprende a programar en C# Calificación: 5 de 5 estrellas5/5AngularJS: Conviértete en el profesional que las compañías de software necesitan. Calificación: 4 de 5 estrellas4/5Fundamentos de Programación y Bases de Datos Calificación: 0 de 5 estrellas0 calificacionesEl gran libro de Android Avanzado Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar con Ajax Calificación: 0 de 5 estrellas0 calificacionesProgramación de Computadoras: De Principiante a Malvado—JavaScript, HTML, CSS, & SQL Calificación: 1 de 5 estrellas1/5Curso de Programación y Análisis de Software - 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar Ajax y jQuery Calificación: 1 de 5 estrellas1/5Programación en C++ Calificación: 2 de 5 estrellas2/5Aprende a Programar para Android Calificación: 5 de 5 estrellas5/5Programación Orientada a Objetos en JAVA Calificación: 0 de 5 estrellas0 calificaciones
Computadoras para usted
Seducción con texting: Atrae y seduce las mujeres que deseas con poco esfuerzo dominando el arte de los mensajes de texto Calificación: 4 de 5 estrellas4/5Excel 2021 y 365 Paso a Paso: Paso a Paso Calificación: 5 de 5 estrellas5/5EL PLAN DE MARKETING EN 4 PASOS. Estrategias y pasos clave para redactar un plan de marketing eficaz. Calificación: 4 de 5 estrellas4/5Psicopatología básica Calificación: 4 de 5 estrellas4/5El Arte de las Ventas: Descubre los Secretos de los Mejores Vendedores del Mundo e Incrementa tus Ganancias más Allá de lo que Pensabas Posible Calificación: 0 de 5 estrellas0 calificacionesLas Estafas Digitales Calificación: 5 de 5 estrellas5/5Conquista de las Redes Sociales: 201 Consejos para Marketeros y Emprendedores Digitales Calificación: 5 de 5 estrellas5/5Inteligencia artificial: Aprender sobre chatbots, robótica y otras aplicaciones comerciales Calificación: 5 de 5 estrellas5/5APLICACIONES PRACTICAS CON EXCEL Calificación: 5 de 5 estrellas5/5Cómo Eliminar Distracciones: Dispara tu Atención y Concentración Mental con Sencillos Métodos que Puedes Empezar a Usar Hoy Mismo Calificación: 5 de 5 estrellas5/5Fractales De Dios Calificación: 5 de 5 estrellas5/5Minimalismo Digital: Una Guía para Simplificar tu Vida Digital y Vivir con Menos Estrés Calificación: 0 de 5 estrellas0 calificacionesVender En Internet - Cómo Ganar Dinero Vendiendo En Ebay, Amazon, Fiverr Y Etsy Calificación: 4 de 5 estrellas4/5Biografía De Elon Musk Calificación: 4 de 5 estrellas4/5Brand management en 4 pasos: Cómo gestionar la comercialización de su marca mejorando su potencial y eficacia Calificación: 5 de 5 estrellas5/5Quiero Trabajar Desde Casa, ¿Cómo Empiezo?: Descubre Cómo es Posible Ganar Dinero o Empezar un Negocio desde la Comodidad de tu Hogar Calificación: 0 de 5 estrellas0 calificacionesSQL para Principiantes Calificación: 4 de 5 estrellas4/5Aprende a programar en C# Calificación: 5 de 5 estrellas5/5Análisis de datos con power bi, r-rstudio y knime: Curso práctico Calificación: 0 de 5 estrellas0 calificacionesCómo Hacer Tu Propia Página Web Gratis Calificación: 4 de 5 estrellas4/5
Comentarios para Curso de Programación Web
10 clasificaciones0 comentarios
Vista previa del libro
Curso de Programación Web - Alberto Ayoze Castillo
Curso de Programación
Web
JavaScript, Ajax y jQuery
––––––––
Alberto Ayoze Castillo
Copyright © 2015 Alberto Ayoze Castillo
ISBN-13: 978-1514267561
––––––––
NOTA DEL AUTOR
––––––––
Esta publicación está destinada a proporcionar el material útil e informativo. Esta publicación no tiene la intención de conseguir que usted sea un maestro de las bases de datos, sino que consiga obtener un amplio conocimiento general de las bases de datos para que cuando tenga que tratar con estas, usted ya pueda conocer los conceptos y el funcionamiento de las mismas. No me hago responsable de los daños que puedan ocasionar el mal uso del código fuente y de la información que se muestra en este libro, siendo el único objetivo de este, la información y el estudio de las bases de datos en el ámbito informático. Antes de realizar ninguna prueba en un entorno real o de producción, realice las pertinentes pruebas en un entorno Beta o de prueba.
El autor y editor niegan específicamente toda responsabilidad por cualquier responsabilidad, pérdida, o riesgo, personal o de otra manera, en que se incurre como consecuencia, directa o indirectamente, del uso o aplicación de cualesquiera contenidos de este libro.
Todas y todos los nombres de productos mencionados en este libro son marcas comerciales de sus respectivos propietarios. Ninguno de estos propietarios ha patrocinado el presente libro.
Procure leer siempre toda la documentación proporcionada por los fabricantes de software usar sus propios códigos fuente. El autor y el editor no se hacen responsables de las reclamaciones realizadas por los fabricantes.
Tabla de contenido
Introducción
Características de JavaScript
¿Hay que aprender Javascript?
Consideraciones en la sintaxis de Javascript
La Línea de comentarios
Empezar a trabajar con JavaScript
Ejecutar JavaScript
Separar el código
¿Dónde colocar el Javascript ?
Sintaxis Básica de Javascript
Las Variables
Tipos en Javascript
Tratar Números
Los Strings
Trabajar con Booleanos
null y undefined
Conversión de tipos
El Condicional - if / else
Operador Condicional Ternario
El Condicional - switch
Bucle For
Los Arrays
Trabajar con Funciones
Los Objetos
Otro ejemplomás
Orientación a Objetos
Un Ejemplo
Ajax
Un primer programa
Utilizar archivos XML
Petición del tipo POST
Petición del tipo GET
Ajax en el comienzo
Utilizar Ajax con PHP y jQuery
Métodos más cortos con jQuery
jQuery.get
Observar y modificar los programas
Planteamiento previo de los programas de Javascript
Estructuras básicas
Programas externos
Problemas con los navegadores antiguos
Funciones
Mecanismos elementales
Variables, Constantes y Literales
Variables
Constantes
Literales
Expresiones. Operadores
Asignaciones
Concepto de expresión
Concatenación
Operadores aritméticos
Operadores de sustitución
Textos de contenido numérico
Objetos y propiedades
Organización e identificación de los objetos
Propiedades y valores
Las propiedades del documento
Propiedades de los objetos interiores del documento
Las propiedades de los objetos en las instrucciones de asignación
Estructuras de Control y los operadores condicionales
La instrucción if()
if() sin else
Un if()... else... dentro de otro
Operadores de comparación
El operador condicional
Uso de switch()
Los bucles: while() y for()
Los bucles
La estructura while()
La variante do...while()
La estructura for()
La variante for...in...
Las instrucciones break y continue
Combinación de condiciones
El operador ||
El operador &&
Formularios Web
Captación de datos con un formulario
Elementos de los formularios identificados con nAME
Elementos de los formularios identificados con id
Las matrices de los formularios
Lectura y escritura
Campos de texto, en general
Campos de validaciones compatibles
Campos de selecciones incompatibles
Menús desplegables
Funciones. Introducción
Definición de funciones
Llamar a las funciones
Ámbito de una función
Cierres
Usando el objecto arguments
Funciones predefinidas
Funciones predefinidas
Cuadros de diálogo
La función prompt()
La función confirm()
La función alert()
Funciones: argumentos y extracción de valores
Clases de variables
Argumentos en las funciones de usuario
Ejecución de las funciones con argumentos
Extracción de valores de una función de usuario
Ejecución sin funciones de usuario
Más usos de las funciones
Uso de una función dentro de una expresión
Una función como argumento de otra
Una función dentro de otra
Uso recursivo de funciones
Imágenes
Gestión de las imágenes
Uso de getElementById
La matriz images[n]
Las imágenes como apoyo de eventos
Objetos y ejemplos
El objeto Image()
La etiqueta
¿Cuando se ejecutan los programas?
Ejecución de Javascript mientras se carga un documento:
Gestores de eventos
Cambios al terminar la carga de un documento
Hacer clic sobre un elemento
onMouseOver
onMouseOut
Acumulaciones de gestores
Uso de un hipervínculo ficticio
Gestores de eventos
Introducción
onFocus y onBlur
onSubmit y onReset
onChange
Cambiar de documento
Uso de las formas abreviadas de las direcciones
Otras propiedades de location
Referrer
Modificación del texto de un documento
Modificación del texto de un documento ya cargado
Obtención de datos para los cambios de texto
Modificación de las especificaciones de estilo
Cambios de estilo en los elementos de texto
Modificación de la visibilidad de las capas
El estilo y la resolución de la pantalla
Fechas y Horas
Propiedades y métodos
Extracción de los datos de las instancias de Date()
Otras fechas y horas
Modificación de los datos
Horario Universal
Matrices. Introducción
El objeto Array
Creación de una matriz
Rellenar una matriz
Referir a los elementos de la matriz
Iterar sobre arrays
Métodos de matriz
Arrays multidimensionales
Las matrices y las expresiones regulares
Comprensiones de matriz
El objeto Boolean
Objetos de fechas
El objeto función
El objeto Math
El objeto String
Matrices. Desarrollo
Propiedades y métodos del objeto Array ()
Creación de matrices
Uso de variables en las matrices
Cambio de orden de una matriz
Longitud de una matriz
Manipulación de las cadenas de texto
Propiedades y métodos del objeto String ()
La función eval()
La función toString()
Más cálculos matemáticos
Introducción
Valores matemáticos destacados
Manipulación de los valores de números
Potencias y logaritmos
Funciones trigonometricas
Cambios de base
Números aleatorios
Expresiones Regulares
Creación de una expresión regular
Escribir un patrón de expresión regular
Uso de paréntesis
Trabajar con expresiones regulares
Usando paréntesis Subcadena Partidos
Avanzada que busca con Banderas
Ejemplos
Migración de variables
Captación de datos
Envio de datos con location.href
Uso de cookies para guardar variables
Almacenamiento de las cookies
Lectura de las cookies
Ventanas múltiples
Ventanas con marcos
Abrir una nueva ventana: open()
Abrir una ventana y poner una parte del documento
La función close()
Desplazamiento de una ventana
Funciones dependientes del tiempo
Ejecución de un proceso a intervalos regulares de tiempos
Posponer un proceso durante un periodo cualquiera
Uso recursivo de setTimeout.
Historial, resolución y navegador
El historial
Resolución de pantalla
El navegador
Dibujo sobre canvas
Especificaciones de color y de grosor
Rectángulos
Líneas rectas y arcos de circunferencia
Puntos
Gradientes
Dibujos compuestos
Borrar
Dibujos dependientes de una función
Javascript externo
Acciones no condicionadas
Asignación externa de funciones a gestores de eventos
Asignaciones múltiples
Selección de elementos por categoría
Navegación mediante un desplegable
Objetivo
Contenido
inicial.htm
prog.js
Navegación mediante botones variables
Objetivo
Contenido
menu.htm
prog.js
Menú de columna desplegable
Objetivo
Contenido
Serie de fotografías con miniaturas
Objetivo
Contenido
miniaturas.htm
fotos.htm
prog.js
Transición suave entre fotografías
Objetivo
Contenido
prog.js
estilo.css
Presentación aleatoria de una imagen
Objetivo
Contenido
fotos > *.*
programa.js
Presentación de la fecha y la hora iniciales
Objetivo
Contenido
document.htm
programa.js
Presentación constantemente actualizada de la fecha y la hora
Objetivo
Contenido
document.htm
programa.js
Introducción a Ajax
AJAX Http Requests
Soporte de los Navegadores
AJAX y PHP: Aprendiendo la base
Aprendiendo AJAX
AJAX primitivo
Desarrollando una aplicación con AJAX
Modelado
Módulo JavaScript
Módulo PHP
Módulo HTML
Enviar formularios con AJAX usando PHP
Ejemplos en Ajax
Solicitar un usuario
Enviando una petición del usuario
AJAX – El Script Server-Side
Sugerencia para hacer en AJAX
Sugerencia para hacer con Ajax
La página del usuario de AJAX con ASP y PHP
Ejemplo de AJAX con bases de datos
El AJAX JavaScript
Ejemplo de la base de datos de PHP, AJAX y MySQL
La base de datos
El formulario del HTML
El JavaScript
La página PHP
Ejemplo de AJAX XML
El AJAX JavaScript
La página del usuario de AJAX
Ejemplo de PHP y de AJAX XML
El formulario HTML
El archivo XML
El JavaScript
La página PHP
Ejemplo de AJAX ResponseXML
El AJAX JavaScript
La página del usuario de AJAX
Ejemplo del responseXML de PHP y de AJAX
El formulario del HTML
El JavaScript
La página de PHP
AJAX AppML
jQuery
JQUERY VS .$( )
Observando Eventos HTML
Ajax y JSON con jQuery y PHP
jQuery – Eventos en contenido cargado por Ajax
jQuery UI
Traduciendo el Calendario. El DatePicker del jQuery UI
Ir hacia el top de la página usando jQuery
Usar un Select con jQuery + Ajax + JSON
SELECTORES
PSEUDO-SELECTORES
PROBANDO SI UNA SELECCIÓN CONTIENE ELEMENTOS
MANIPULANDO ATRIBUTOS
CREANDO ELEMENTOS DINÁMICAMENTE
¿Por qué trabajar con jQuery UI?
Instalación
Accordion
Autocomplete
Button
Datepicker
Dialog
Progressbar
Tabs
Backbone. Un framework MVC para Javascript.
Puntos Clave
¿Por qué Elegirlo?
Una primera prueba - Hello World
Backbone. Las Views
Crear y definir una View
El Método render()
La Propiedad el
Backbone. Más de Views y Templates
Templates almacenados en el archivo HTML
Backbone. Views y Eventos
Un Ejemplo
Backbone. Un ejemplo de view
Backbone. Models
El Método set()
El Método get()
Otro ejemplo más
Backbone. Los Models y Los Eventos
Backbone. Los Models y Las Views
Un ejemplo más completo
Backbone. Las Collections
El Método get()
Visualizar la colección
Recorrer la collection
Ordenar la colección
Backbone. Las Collections y Los Eventos
Otros eventos
Los Eventos entre Models y Collections
Backbone. Uniendo Collections y Views
Un ejemplo más completo
Backbone. Sincronizando un modelo
Recuperar el registro read - fetch()
Insertar un registro Create - save()
Actualizar Update - save()
Eliminar Delete - destroy()
Backbone. Sincronizando Colecciones
Backbone. Explorando el sync
Sincronizando un modelo sin afectar los demás
Backbone. Definir rutas
Index y default
Utilizar Parámetros
Ejemplos de Backbone
Conclusión
Referencias bibliográficas
––––––––
Introducción
––––––––
En sus comienzos, el lenguaje JavaScript fue creado para funcionar en el lado del cliente y se ejecutaba exclusivamente en los navegadores web. La base de la programación en el lado del cliente consiste en escribir un script y hacer que este funcione en el navegador sin tener que viajar hasta el servidor para ser ejecutado.
Ejecutarse en el navegador significa que el navegador tendrá la posibilidad de interpretar y ejecutar el lenguaje. Este hace eso a través de sus motores (engines) y cada navegador tiene el suyo propio. Si busca en internet por engines javascript encontrará nombres como V8, WebKit, SipderMoney, TraceMonkey, Gecko, Chakra, etc...
El engine más usado es la V8 lanzado por Google y embebido en su navegador Chrome. Su popularidad, sin lugar a dudas, se debe al hecho de que es utilizado por el Node.js. Como mencionamos al principio, inicialmente el lenguaje se usaba para resolver problemas de interactividad de las páginas web, esta estaba en el lado del cliente (en el navegador) haciendo lo que los lenguajes del lado del servidor no podían hacer. Por contra, JavaScript estaba limitado a simplemente poder realizar mejorías en las páginas web, no es que eso fuera fácil o simple ni tan poco desmerecedor, pero el lenguaje estaba limitado al espacio del navegador.
El Node.js puso un fin a ese límite, trajo el lenguaje hacia el lado del servidor colocándolo como competidor de los demás lenguajes de servidor como PHP, Python, Ruby, ASP y etc...
Si ha trabajado con JavaScript antes de que trabajar con Node.js, debe sentirse excitado con la posibilidad de poder ejecutar JavaScript en el lado del servidor. Pero para quien nunca programó en JavaScript, debe saber que existen dos caminos que se deben trabajar (el del servidor y el del cliente) tal vez no sea nada asombroso, ya que su curva de aprendizaje será acentuada. Teniendo en cuenta que la opinión más importante es la suya y no la mía, le invito a emitir su opinión sobre la siguiente cuestión: ¿Cuál será la primera impresión que tendrá un principiante sobre JavaScript ahora que este puede ser ejecutada tanto en el lado del servidor como en el cliente?
Si usted es un principiante o no, aún existen más preguntas que deberá tener en cuenta:
•¿Debo aprender JavaScript del lado del servidor o del lado del cliente?
•¿En cuál me inicio?
•¿A cuál debo dedicarme más?
No hay una única respuesta para estas preguntas. En mi opinión usted debe aprender las dos formas, comenzar por la que tengas más ganas y especialícese en la que más le guste, sin embargo nunca ignore el otro lado, si necesita más información trate de entender las diferencias entre un programador server-side y un front-end.
Entonces, ¿Qué es JavaScript?
JavaScript (a veces llamado sólo de JS) es un lenguaje de programación, leve, interpretado, orientado a objetos, basada en prototipos y en first-class functions (funciones de primera clase), más conocida como el lenguaje de script de la Web. También se utiliza en otros entornos como node.js y Apache CouchDB
.
Mozilla Foundation
JavaScript es el lenguaje de programación que Netscape creó para dar vida (del lado del cliente - front end) a su navegador. El nombre tiene una orientación comercial, quisieron aprovechar el éxito de Java y escogieron un nombre similar. El resultado es que hasta hoy (2015) hay una confusión enorme. JavaScript no es Java (y viceversa). El padre de este se llama Brendan Eich.
Netscape fue vendida y dio lugar a la fundación Mozilla, tomó los mandos del negocio y viene realizando un óptimo trabajo.
La popularidad se dio por el hecho de que JavaScript hacía lo que ningún otro lenguaje podía hacer: transformar páginas HTML estáticas en algo dinámico sin tener que viajar
hasta el servidor, estamos hablando del lado del cliente (front end). El Node.js, lanzado en 2009, también colaboró mucho en la popularidad de este lenguaje, llevándolo hacia el servidor.
Parece algo que puede dominar en una tarde, JS parece simple, pero, en sus 15 años de historia hasta aquí, las mejores prácticas de JS parecían cambiar con las estaciones.
. Kevin Yank y Cameron Adams (Simple JavaScript)
¿Está realmente JS Orientado a Objetos?
JavaScript contiene objetos que pueden contener datos y métodos que actúan sobre esos datos. Los objetos pueden contener otros objetos. JavaScript no tiene clases, pero tiene constructores que son capaces de hacer lo que hacen las clases, incluyendo actuar como contenedores para las clases de variables y métodos. Este no tiene herencia orientada a la clase, pero tiene herencia orientada al prototipo.
JavaScript es un lenguaje orientado a objetos. Eso significa que, en vez de tener funciones definidas globalmente para operar en valores de varios tipos, los propios tipos definen métodos para trabajar con valores. Para clasificar los elementos de un array a, por ejemplo, no pasamos a hacia una función sort(). En vez de eso, llamamos al método sort() de a:
a.sort() // versión orientada a objetos de sort(a)
¿Es JavaScript seguro?
Vamos a extender esa pregunta a: ¿El lenguaje de programación X es seguro?
Ningún lenguaje de programación es seguro o inseguro, la pregunta correcta sería:
¿El desarrollador programa de forma segura?
Lo que sucede con JavaScript es que el código queda expuesto a cualquier usuario, por ello, percibimos erróneamente, que JavaScript es inseguro, pero esto no es verdad. Seguro o inseguro es la forma en como se programa.
En el caso de la programación client-side, con miras a que el código queda expuesto, no crearemos ningún código sensible (un código que pueda ser explorado por un hacker causando daños a la aplicación).
Estandarización
ECMAScript es la estandarización que rige el lenguaje JavaScript, en realidad este es el nombre oficial adoptado para el lenguaje, pero no pega
de ninguna manera.
¿Porque tenemos un estándar? Porque cada navegador implementa el lenguaje de forma diferente, en otras palabras, si escribe un trozo de código JavaScript que funciona en el Firefox, por ejemplo, puede que no funcione en el Internet Explorer. Es más, JavaScript sufre del mismo problema que el HTML y el CSS, cada navegador lo implementa a su manera.
En teoría, la estandarización obliga a las empresas fabricantes de navegadores a implementar como mínimo aquel conjunto de funcionalidades
. (Edgar Damiani). Por eso el estándar ECMA es tan importante.
Los documentos construidos exclusivamente con los recursos del lenguaje HTML son estáticos; es decir, se muestran siempre del mismo modo. Las posibilidades de interacción del usuario son muy reducidas, y se limitan al cambio de documento mediante los hipervínculos y a la recepción y envio de datos con formularios.
Javascript es un lenguaje de programación, creado por Netscape y hoy ampliamente - pero no totalmente - estandarizado, capaz de actuar dentro de los documentos HTML y darles el carácter dinámico que los códigos HTML a solas no pueden conseguir. El uso conjunto de HTML, hojas de estilo y Javascript se acostumbra a denominar HTML dinámico o DHTML.
Javascript presenta afinidades con el lenguaje C++, del cual deriva.
JavaScript es un lenguaje de programación interpretado. Fue originalmente implementada como parte de los navegadores web para que los scripts pudieran ser ejecutados en el lado del cliente e interactuasen con el usuario sin la necesidad de que este script pase por el servidor, siendo controlado por el navegador, realizando comunicación asíncrona y modificando el contenido del documento mostrado.
Actualmente es el principal lenguaje para la programación client-side en los navegadores web. Fue concebido para ser un lenguaje script con orientación a objetos basado en prototipos, tipado débil y dinámica y funciones de primera clase. Posee soporte a la programación funcional y presenta recursos como cierres y funciones de alto nivel comumente disponibles en lenguajes populares como Java y C++.
Características de JavaScript
Las siguientes características son comunes a todas las implementaciones conforme al ECMAScript.
Imperativa y Estruturada
JavaScript soporta los elementos de sintaxis de programación estruturada del lenguaje C (por ejemplo, if, while, switch). Una excepción es la cuestión del alcance: el alcance en bloques al estilo de C no es soportado por Javascript, en su lugar utiliza el alcance a nivel de función. JavaScript 1.7, sin embargo, soporta el alcance a nivel de bloque a través del comando let. Al igual que C, JavaScript hace distinción entre expresiones y comandos. Una diferencia sintática con C es fin de línea termina automáticamente el comando, siendo el punto-y-coma opcional al fin del mando.
Dinámico
Tipado dinámico
Como en la mayoría de los lenguajes script, los tipos son asociados con valores, no con variables. Por ejemplo, la variable x podría ser asociada a un número y más tarde asociada a una string. JavaScript soporta varias formas de probar el tipo de un objeto, incluyendo el ducktyping.
Basado en objetos
JavaScript está casi completamente basado en objetos. Los objetos de JavaScript son arrays asociativos, aumentados con prototipos. Los nombres de la propiedad de un objeto son strings: obj.x = 10 y obj [x
] = 10 son equivalentes, el punto en este ejemplo es la propiedad. Las propiedades y sus valores pueden ser añadidas, modificadas, o eliminadas en tiempo de ejecución. La mayoría de las propiedades de un objeto (y aquellos en su cadena de herencia mediante prototipo) puede ser enumerada usándose una estructura de repetición for...in. Javascript tiene un pequeño número de objetos por defecto en el lenguaje como window y document.
Evaluación en tiempo de ejecución
JavaScript incluye la función eval que consigue ejecutar en tiempo de ejecución comandos del lenguaje que estén escritos en una string.
Funcional
Funciones de primera clase
En JavaScript las funciones son de primera clase, es decir, son objetos que tienen propiedades y métodos, y pueden ser pasados como argumentos, sean atribuidos a variables o retornados como otro objeto.
Funciones anidadas
Las funciones 'internas' o 'anidadas' son funciones definidas dentro de otras funciones. Son creadas cada vez que la función que las contiene (externa) es invocada. Además de eso, el alcance de la función externa, incluyendo las constantes, las variables locales y los valores de los argumentos, transforman parte del estado interno de cada objeto creado a partir de la función interna, aún después de que la ejecución de la función interna haya finalizado.
Cierres
JavaScript permite que las funciones anidadas sean creadas con el alcance semántico en el momento de su definición y posee el operador () para invocarlas en otro momento. Esa combinación de código puede ser ejecutado fuera del alcance en el cual fue definido, con su propio alcance durante la ejecución, es denominado, dentro de la ciencia de la computación, cierre.
Basado en Prototipos
Prototipos
JavaScript usa prototipos en vez de clases para el mecanismo de la herencia. Es posible simular muchas características de la orientación a objetos basadaa en clases con prototipos.
Funciones y métodos
A diferencia de otros lenguajes orientados a objetos, no hay distinción entre la definición de una función y la definición de un método en JavaScript. La distinción sucede durante la llamada de la función; la función puede ser llamada como un método. Cuando una función es llamada como método de un objeto, la palabra this de la función es asociada a aquel objeto mediante tal invocación.
Uso en páginas Web
El uso primario de JavaScript es escribir funciones que son incrustadas o incluidas en páginas HTML y que interactúan con el Modelo de Objeto de Documentos (DOM) de la página. Algunos ejemplos de este uso son:
abrir una nueva ventana con un control programado sobre su tamaño, posición y atributos;
validar los valores de un formulario para garantizar que son válidos antes de ser enviados al servidor;
cambiar imágenes a medida de que el mouse se mueve sobre ellas.
Por el hecho de que el código JavaScript se ejecuta localmente en el navegador del usuario, y no en un servidor remoto, el navegador puede responder a tales acciones rápidamente, haciendo una aplicación más sensible. Además de eso, el código JavaScript puede detectar acciones de usuario que el HTML por si solo no puede, tales como que teclas son presionadas individualmente. Las aplicaciones como Gmail aprovechan esa ventaja: gran parte de la lógica de la interfaz de usuario está escrita en JavaScript, y JavaScript envía los requisitos de información, tales como el contenido de un correo electrónico, hacia el servidor. La tendencia más amplia de programación en Ajax explora de una manera similar este punto fuerte.
Una JavaScript engine (también conocida como interpretador JavaScript o una implementación JavaScript) interpreta el código fuente JavaScript y lo ejecuta de forma adecuada. La primera implementación JavaScript fue creada por Brendan Eich en la Netscape Communications Corporation, para el Navegador Netscape. La implementación, llamada SpiderMonkey, está implementada en C y ha sido actualizada conforme a la edición 3 del ECMA-262. La implementación Rhino, creada primeramente por Norris Boyd, es una implementación de JavaScript en Java. Rhino, como SpiderMonkey, se ha realizado conforme a la tercera edición del ECMA-262.
Por ser JavaScript el único lenguaje que la mayoría de los navegadores populares soportan, se hecho un lenguaje objetivo para muchos frameworks en otros lenguajes, a pesar del hecho de no haber sido planeado para tal. No obstante las limitaciones de performace inherente a su naturaleza dinámica, la creciente velocidad de las implementaciones JavaScript ha hecho del mismo un práctico lenguaje intermediario.
Compatibilidad
Ya que JavaScript se ejecuta en ambientes variables, una parte importante de las pruebas y de la depuración de su código consiste en la verificación de la compatibilidad entre los distintos navegadores.
Las interfaces DOM para la manipulación de páginas web no son parte del patrón ECMA, ni del propio JavaScript. Oficialmente, son definidas por un esfuerzo de estandarización de la W3C; en la práctica, las implementaciones en los navegadores difieren del patrón de unos para los otros, y tampoco todos navegadores ejecutan JavaScript.
Para lidiar con esas diferencias, los desarrolladores de Javascript intentan con frecuencia escribir códigos que sean conformes con el patrón común de la mayoría de los navegadores; si no es posible eso, intenta escribir de manera ad-hoc un código que verifique la presencia de ciertos recursos y que se comporte de la manera adecuada en el caso de que tales recursos no estén disponibles. En algunos casos, dos navegadores pueden implementar una misma funcionalidad con comportamientos diferentes, y los desarrolladores pueden encontrar práctico detectar que navegador está ejecutando y cambiar el comportamiento de sus scripts para adecuarse a eso. Los desarrolladores también pueden usar bibliotecas o herramientas que abstraen tales diferencias entre los navegadores.
Además de eso, los scripts pueden no funcionar para algunos usuarios. Por ejemplo, un usuario puede:
Usar un navegador antiguo o raro con un soporte DOM incompleto o que no sea común.
Usar un navegador de un PDA o de un teléfono móvil que no sea apto para ejecutar JavaScript.
Tener la ejecución del JavaScript deshabilitada por normas de seguridad.
Para dar soporte a tales usuarios, los desarrolladores web intentan crear páginas que sean robustas a los clientes que no soporten el JavaScript de la página. En particular, una página debe funcionar a pesar de que las funcionalidades extras que un JavaScript provee. Una manera alternativa que muchos encuentran preferible es que la página sea desarrollada primero a partir de tecnologías básicas que funcionen en todos los navegadores, y a partir de ahí mejorar para los usuarios que tengan JavaScript.
Accesibilidad
Asumiendo que el usuario no tenga deshabilitada su ejecución, se puede utilizar JavaScript del lado cliente para mejorar la experiencia de un usuario con deficiencia física o visual.
Los lectores de pantalla utilizados por las personas ciegas o con visión parcial pueden detectar la presencia de JavaScript y de esa forma acceder y leer el DOM de la página después que sus scripts sean ejecutados. En estos casos se recomienda que el HTML sea lo más conciso, navegable y rico semánticamente posible, tenga la página scripts o no. No se recomienda que el código JavaScript de una página sea totalmente dependiente de los eventos provenientes del mouse ya que los usuarios que no tengan u optan por no usar el mouse no serán aptos para usar los beneficios de tal código. De la misma forma, aunque los hipervínculos y los formularios puedan ser navegados y operados desde teclado, JavaScript cuenta con eventos independientes del dispositivo de usuario tales como onfocus y onchange que son los más recomendados en la mayoría de los casos.
No se recomienda utilizar JavaScript de una manera que sea confusa o desorientadora para cualquier usuario de internet. Por ejemplo, usar JavaScript para modificar o deshabilitar la funcionalidad normal de un navegador, tal como cambiar la forma con la que el botón derecho o el evento de actualización funcionan, deben de ser evitadas. De la misma forma, los eventos de interrupción en los que el usuario puede no ser conocedor reducen la sensación de control del usuario, así como los scripts inesperados que cambian el contenido de la página.
Frecuentemente el proceso de hacer páginas web complejas tan accesibles cuánto es posible se transforma en un problema nada trivial, donde ciertas decisiones son asunto de debate y de opinión. Sin embargo, las tecnologías asistidas están constantemente evolucionando y las nuevas recomendaciones e informaciones relevantes suelen publicarse en la web y en los medios de comunicación tradicionales.
Seguridad
JavaScript y el DOM representan un gran potencial para los desarrolladores maliciosos que escriben scripts para ejecutar en un cliente mediante web. Los navegadores están preparados para evitar y contener este riesgo de dos maneras. La primera es que scripts sean ejectuados en una sandbox en la cual sólo se pueden ejecutar acciones relacionadas a internet, no tareas de programación de propósito general como crear archivos. La segunda es que los scripts están limitados por la regla del mismo origen: los scripts de una web no tienen acceso a informaciones como nombres de usuario, contraseñas o cookies enviadas desde otra web. La mayoría de los bugs en JavaScript