top.on('click', function(){ anim.run(); });
У меня есть функция anim, и мне было интересно, почему я не могу назвать ее так
top.on('click', anim.run);
top.on('click', function () { anim.run(); });
или
top.on('click', Y.bind(anim.run, anim));
Поскольку this не является anim во втором случае, так как вы извлекаете функцию run и не вызываете ее из anim.
this
anim
run
Например:
var a = { b: function () { return this.c; }, c: 1 }, c = 2; a.b() === 1; var bMethod = a.b; bMethod() === 2;