Pergunta

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

Eu tenho uma função anim, e queria saber por que eu não posso chamá-lo assim

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

Solução

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

ou

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

Outras dicas

Porque this não é anim no segundo caso, como você está recuperando a função run e não chamá-lo de anim.

Por exemplo:

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

a.b() === 1;
var bMethod = a.b;
bMethod() === 2;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top