Citas de Virgilio

“Audaces Fortuna iuvat.”

T: “La fortuna favorece a los valientes.”. “A los osados sonríe la fortuna”
F: La Eneida

“Breve et irreparabile tempus omnibus est vitae.”

T: “El tiempo de vivir es para todos breve e irreparable.”

“Timeo Danaos et dona ferentes”

T: Ten(ed) cuidado con los griegos que portan regalos.
F: Palabras del sacerdote troyano Laconte en la Eneida

“Fata viam invenient.”

T: El destino se abre sus rutas.

“Possunt quia posse videntur.”

T: “Pueden los que creen que pueden.”

“Flectere si nequeo superos, Acheronta movebo.”

T: “Si no puedo persuadir a los dioses del cielo, moveré a los de los infiernos.”
F: Eneida, 7, 312.

“Fugit irreparabile tempus.”

T: “El tiempo huye irreparablemente.”
F: Geórgicas, 3, 284.

“Hos ego versiculos feci, tulit alter honores”

T: Yo escribí estos versos, otro se llevó los honores

“Omnia vincit Amor; et nos cedamus Amori.”

T: “El amor conquista todas las cosas; démosle paso al amor.”

Fuente: Wikipedia

Referencias en javascript

Un caso de referencia incorrecta, sacado de aquí:

function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function () {
alert(i);
};
document.body.appendChild(link);
}
}
window.onload = addLinks;

Clickando en cualquiera de los links siempre se referirá a Link5 ya que el onclick no se ejecuta.

Para solucionarlo, debemos crear una closure en el onclick para que tome el valor de i en ese momento:

function addLinks () {
for (var i=0, link; i<5; i++) {
link = document.createElement("a");
link.innerHTML = "Link " + i;
link.onclick = function (num) {
return function () {
alert(num);
};
}(i);
document.body.appendChild(link);
}
}
window.onload = addLinks;

Patrón javascript para OOP

Se refiere a usar un estilo de programación orientada a objetos en javascript.

Las funciones anónimas crean una closure dentro de ellas permitiendo que todo el scope quede oculto al exterior y accesible al interior y con ello ya tendríamos solucionado el acceso “private”.

Pero ¿Cuál sería el mejor método para hacer hacer el acceso explícitamente público ?. Pues usando el siguiente patrón llamado Yahoo Module Pattern que básicamente pone dentro del return todo lo que queramos hacer “public”.

Tomando el ejemplo de Robert Nyman,

var person = function () {

// Acceso Privado
var name = "Robert";

// Acceso Público
return {
getName : function () {
return name;
},
setName : function (newName) {
name = newName;
}
};
}(); // esta sintáxis hace que la función se autoejecute

alert(person.name); // Undefined
alert(person.getName()); // "Robert"
person.setName("Robert Nyman");
alert(person.getName()); // "Robert Nyman"

Observamos cómo hacemos name privada y las funciones de getter y setter públicas.

Si no necesitamos que la función se autoejecute (como es habitual en Node), podemos usar una sintaxis alternativa (pero no tengo claro que equivalente) y que personalmente prefiero a la anterior; Se trata de usar this para referenciar los objetos que queramos hacer públicos.

function Prova() {
// parte privada
var nombre="pere";

function mayus(algo) {
return algo.toUpperCase();
}

// parte pública
this.getName=function() {
// accedemos a la funcion
// "privada" dentro
// del closure
return mayus(nombre);
}

this.setName=function(newName) {
nombre=newName;
}
} // creamos el objeto con new

var p=new Prova();
console.log(p.nombre); // undefined
console.log(p.mayus("Pere Vilas")); // Error: has no method
console.log(p.getName()); // devuelve PERE

Written (and syncronized with StackEdit)

Wonderful!!

This text has been written in markup and then synchronized with Blogger. This the end of the editing pain on Blogger.

A cité

A numbered list

  1. one
  2. two
  3. three

An unnumbered list

  • One
  • Two
    • Three
    • Four

this is source code

This is also source code but
marked with a tab or four spaces

If you liked it, you must visit StackEdit:

Written with StackEdit.