This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Permite reaccionar a valores que están cambiando dentro del objeto. | |
// Asemeja al data binding (iNotifyPropertyChanged) en c#. | |
// Utiliza los métodos como propiedades en ves de campos publicos. Como hace el framework Knockout.js | |
// prieceChanging y prieceChanged son arreglos que almacenarán los métodos que se ejecutarán en esos casos. | |
var Book = function( name, price ) { | |
var priceChanging = [], | |
priceChanged = []; | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Util para crear API's que trabajen con objetos mutables. | |
// Trabaja con un objeto raiz. | |
// Patrón utilizado en JQuery y LinQ | |
// Las funciones retornan su objeto raiz para que sea posible encadenar funciones | |
// y hacen las operaciones sobre una variable que pertenece al objeto raiz. | |
var Calc = function( start ) { | |
this.add = function( x ) { | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// "arguments" contiene todos los argumentos pasados a la función. | |
// Util en caso de que el numero de argumentos posibles sea indeterminado. | |
// En el ejemplo se suman los números pasados como argumentos, aunque no verifica antes si son números. | |
function mySum() { | |
var x = 0, | |
i = 0, | |
length = arguments.length; | |
for ( ; i < length; i++ ) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Para los casos en los que es necesario concatenar tareas asíncronas. | |
// $.get() es una version simplificada de esto: | |
$.ajax({ | |
url: url, | |
data: data, | |
success: success, | |
dataType: dataType | |
}); | |
// Cada operacion al finalizar retorna una promesa que es empleada como una cadena de tareas |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Explicación de los parámetros básicos de ajax | |
* Puede almacenarse en una variable o llamarse directamente. | |
* method: método usado para la solicitud. "POST", "GET", "PUT". | |
* data: incluye datos en el procedimiento. | |
* dataType: establece el formato del archivo que sera devuelto "xml, json, jsonp, script, text o html" | |
* context: el objeto descrito sera el contexto de los callback relacionados con la solicitud. | |
*/ | |
var request = $.ajax({ | |
url: "script.php", | |
method: "POST", |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Use Gists to store code you would like to remember later on | |
console.log(window); // log the "window" object to the console |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// El uso de generadores aún no está estandarizado. 25/10/2015 | |
// Requiere generators.js | |
// El asterisco '*' lo define como generador | |
// yield detiene el procedimiento hasta que pueda continuar | |
// Librerias: bluebird para frontend -usado en el ejemplo-, co para bakcend node.js, q para angular | |
Promise.coroutine(function* () { | |
var user = yield $.get('user.json'); | |
// Do stuff with user |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Los temporizadores en JavaScript son: setTimeout() y setInterval(). | |
// El primero se ejecuta una sola vez y el segundo se ejecuta continuamente. | |
// En ambos casos el primer parametro es la función que se ejecutará y el segundo el tiempo en milisegundos. | |
// El periodo mínimo es de 4ms y el temporizador solo se ejecuta cuando la función principal ha finalizado. | |
var i = 0; | |
var timer = setInterval(function() { | |
console.log( i ); | |
i++; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Las ejecuciones muy largas de codigo JavaScript tienden a bloquear el UI y dejar al navegador sin responder, | |
// sobre todo cuando se emplean bucles. Este patron emplea temporizadores para evitar precisamente este problema. | |
// Es un inconveniente bastante común en dispositivos móviles. | |
var buffer = function( items, iterFn, callback ) { | |
var i = 0, | |
len = items.length; | |
setTimeout(function() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// El orden empleando setInterval() puede ser impredecible ( 0 1 2 5 4 6 8 7). | |
// Invocar recursivamente a setTimeout() puede asegurar el orden de ejecución ( 0 1 2 3 4 5 6). | |
// Hasta que no finalize una ejecución no continua con las demás. | |
var ul = $('ul.log'), | |
index = 0; | |
setTimeout(function getDate() { | |
var started = new Date(), |
OlderNewer