Pregunta

top.on('click', function(){
    anim.run();
});

Tengo una función anim y me preguntaba por qué no puedo llamarla así

top.on('click', anim.run);
¿Fue útil?

Solución

top.on('click', function () { anim.run(); });

o

top.on('click', Y.bind(anim.run, anim));

Otros consejos

Porque this no es anim en el segundo caso, ya que está recuperando la función run y no la está llamando desde anim .

Por ejemplo:

var a = {
  b: function () {
    return this.c;
  },
  c: 1
},
c = 2;

a.b() === 1;
var bMethod = a.b;
bMethod() === 2;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top