js

Diego Benjamín Aguilar Aguilar

Lenguaje de programación

JavaScript es una de los lenguajes de programación más importantes e implícitamente uno de los más ampliamente usados.

Casi cualquier persona con una computadora o un teléfono móvil tiene lo necesario para ejecutar programas JavaScript.

Origen

Fue desarrollado inicialmente por Brendan Eich mientras trabajaba para la compaía del navegador Netscape.

Existía entonces una GRAN competencia por innovar y ganar terreno en la promoción y desarrollo de las tecnologías web.

¿Por qué JavaScript?

A pesar de ser en ocasiones criticado, cuenta con características interesantes como lenguaje de programación. Fue criticado incluso por mí hasta conocer JSON y Node.

Ha sido utilizado para implementar desarrollo web del lado del cliente en una enorme cantidad de librerías, servidores web, bases de datos y un formato de información.

Librerías

Node.js

JSON

Bases de datos NoSQL

Logros

  • HTML dinámico (1997)

    Hizo posible manipular el contenido y la apariencia de una página web. Esto se logró con la implementación del DOM (Document Object Model) generado del HTML en una página web.

    Estas características aparecienron en las versiones 5 de Internet Explorer y Netscape Navigator.

  • XMLHttpRequest (1999)

    Microsoft desarrolló una API para la implementación de JavaScript en Internet Explorer 6 que permitía enviar peticiones HTTP o HTTPS a un servidor y obtener la respuesta en texto.

  • JSON (2001)

    Es el acrónimo de JavaScript Object Notation y su principal propósito es utilizar la sintaxis del lenguaje para almacenar y definir estructuras de datos en un formato de texto.

    JSON se convirtió en una alternativa popular y conveniente a XML, para la definición y transmisión de datos.

  • AJAX (2005)

    AJAX es el resultado de un conjunto de tecnologías integradas para ofrecer un nivel de interactividad en las aplicaciones web.

    Define un protocolo para realizar peticiones asíncronas a un servidor e implementar características y ventajas de usabilidad en aplicaciones.

  • jQuery (2006)

    Ayuda con la manipulación del DOM.

    jQuery es una librería JavaScript que permite realizar una fácil manipulación del DOM por medio de selectores.

    Proporciona además herramientas y funciones para realizar peticiones AJAX, manipulación de texto, iteradores y programación de efectos y eventos.

  • V8 (2008)

    Probando que JavaScript puede ser rápido.

    Es un motor de JavaScript desarrollado por Google, es el utilizado en Chrome y adoptado por Node.js.

    Es open source y puede ser utilizado como un componente independiente utilizando C++ y Java Script como recursos.

  • Node.js (2008)

    JavaScript en el servidor.

    Permite implementar servidores web usando un paradigma dirigido a eventos, y empleando un modelo no bloqueante de entrada y salida.

    La integración otras tecnologías familiares con JavaScript como MongoDB, CouchDB, JSON es sumamente ventajoso.

Objetos

El elemento fundamental de JavaScript es el Objeto.

  • Casi todo es un objeto o actúa como tal.

  • Los objetos funcionan como un contenedor de propiedades.

  • Cada una de estas tiene un nombre y un valor.

  • Todo objeto pertenece a la clase Object.
  • Imagina un objeto Irina Shayk.
    
    {
    	nombre: 		"Irina Valeryevna",
    	apellidos: 		"Shaykhlislamova",
    	edad:			29,
    	nacionalidad:	"Rusa",
    	cualidades:		{
    
    		estatura:	1.78,
    		cabello:	"café"
    		ojos:		verdes,
    		medidas:	[86,58,88]
    	}
    
    }
    					

    Un objeto bien puede sustituir a la Clase en JavaScript.


    ¿Pero acaso, el paradigma orientado a objetos no estaría en contra de un Object nombrado irina?

    En la práctica, es más común encontrarse con objetos que coinciden con el caso de nuestra Irina.

    Probemos REPL de Node
    
    > var irina = {
    	
    	nombre: 		"Irina Valeryevna",
    	apellidos: 		"Shaykhlislamova",
    	edad:			29,
    	nacionalidad:		"Rusa",
    	cualidades:		{
    
    		estatura:	1.78,
    		cabello:	"café"
    		ojos:		"verde",
    		medidas:	[86,58,88]
    	}
      }
    
    > irina
    
    > typeof irina
    
    > irina.constructor
    						

    Constructores

    Un constructor en JavaScript obedece la misma filosofía que en los distintos lenguajes de programación orientados a objetos. Definen y hacen posible la creación de nuevas instancias de una clase. En este caso de nuevos Object.


    Los contructores son funciones, pero en el caso de JS las funciones son objetos comprendiendo todas las características de un objeto, pero trambién serán ocupadas para crear otros objetos cuando se invoquen usando new.

    Constructores nativos

    • Number()
    • String()
    • Boolean()
    • Object()
    • Array()
    • Function()
    • Date()
    • RegExp()
    • Error()

    Creando constructores.

    Definamos un objeto genérico para Irina...

    
    > var Modelo = function(nombre,apellidos,edad,nacionalidad,cualidades) {
    	
    	this.nombre = nombre;
    	this.apellidos = apellidos;
    	this.edad = edad;
    	this.nacionalidad = nacionalidad;
    	this.cualidades = cualidades;
    }
    
    > Modelo
    
    > typeof Modelo
    
    > var irinaShayk = new Modelo(...);
    
    > irina
    
    > typeof irina
    
    > var kateUpton = new Modelo();
    
    > kateUpton
    						

    Primitivos, wrappers y literales

    Existen valores primitivos para:

    • números
    • strings
    • booleanos

    Number, String y Boolean actuán como wrappers para manipular estos primitivos.

    Literales

    Existen además literales para distintos objetos de JavaScript.

    Hacen posible obtener un primitivo sin la necesidad de usar un constructor y new.

    
    
    > var copasDeEuropa = 10;
    > var mejorClubMundo = 'Real Madrid';
    > var cristianoBalonDeOro = true;
    > var delanteros = ['Benzema','Chicharito'];
    > var equipo: {
    	
    	porteros: 	[],
    	defensas: 	[],
    	medios:		[],
    	delanteros:	[]
    };
    
    > typeof ...
    						

    ∅ null y undefined

    undefined

    Significa que una variable ha sido declarada pero aún no ha recibido un valor asignado.

    null

    Es un posible valor asignado. Representa el no valor.

    Funciones

    • También son objetos
    • Por lo tanto, pueden ser parte de atributos de un objeto
    • O incluso una función puede pasarse como argumento en una función

    Las funciones son objetos

    Declaración de funciones

    Function()

    • Toma un una serie de parámetros de número indefinido,

    • los primeros son interpretados como parámetros para la función en questión y

    • se asume el último como el código de la función.

    function declarations
    vs
    function statements

    Function declarations

    Es posible llamarlas antes o después de la definición.

    Function statements

    Sólo es posible llamar a la función después de la definición.

    Recursión

    
    var factorial = function f(n) {
    	
    	if (n == 1)
    		return 1;
    
    	return f(n-1) * n;
    }
    						

    En esta tercer forma de declaración, f será el identificador accesible dentro de la función para invocarse a sí misma. Es decir, recursión.

    Funciones anónimas

    arguments
    
    function listAnimals() {
    	
    	for (i in arguments) {
    		console.log(arguments[i]);
    	}
    }
    
    function sum(x,y) {
    	
    
    	var sum = 0;
    
    	for (var i=0; i