Да нет, я не считаю это цеплянием к словам :-) спасибо, что поправили, теперь вижу разницу между абстрактной и анонимной функциями.
Отделил функции созданные при помощи declaration и statement от анонимных регулярным выражением:
obj.attachEvent('on' + type, listener.toString().search(/^function\s*\(/) + 1 ? listener.bind(obj) : listener);
для этого в прототипе bind возвращаем не анонимную функцию
Function.prototype.bind = function(object) {
var __method = this;
return function __fn() {
return __method.apply(object, arguments);
}
в итоге получается, что если в метод объекта bind передаем анонимную функцию, то выполняется автоматическая обертка, чтобы по ссылке this был доступен этот объект, иначе, если хотим использовать detachEvent передаем в метод объекта bind имя функции или переменную, содержащую функцию, если хотим еще использовать и detachEvent и this, то перед передачей в метод bind, выполняем еще var handler = fn.bind(obj);
Страсти короче, но
работает %)
Как то в jQuery это все автоматически делается