На русский closure обычно переводят как «замыкание».
John Resig в своей книге Pro JavaScript Techniques, которую я сейчас читаю, привел ссылку на статью JavaScript Closures. Это очень мощная, пожалуй, самая глубокая и фундаментальная статья по JavaScript, которую я когда-либо читал. Респект автору, Ричарду Корнфорду.
Стал копать дальше, нашел еще замечательную статью: JavaScript Closures for Dummies. Написано очень понятно, с хорошими примерами. Рекомендую начать с этой статьи, если вы только осваиваете closure. Отдельно отметим оригинальную находку автора поместить кусочек JavaScript-кода на кнопку, который этот код запускает.
Также достойны вашего внимания еще две статьи о closure: на Википедии и Мартина Фаулера. В этих статьях речь идет о closure вообще как о концепции программирования, безотносительно к JavaScript.
Что касается книги Ресига, то я несколько разочарован. Материал изложен поверхностно, не хватает глубины как в статье Корнфорда. Много опечаток и ошибок. Как раз в одном из примеров на closure есть концептуальная ошибка, пример не работает. Не понятно как так можно, что он, не оттестировал примеры перед публикацией что-ли?
UPD: Ошибка в примере на closure (листинг 2-16) есть только в исходном коде, который можно скачать с сайта книги. В самой книге этой ошибки нет.
Жду книгу Дугласа Крокфорда. Надеюсь, старина Крокфорд не подведет :-)
4 комментария:
Спасибо за ссылочки. Сам сейчас читаю книгу "JavaScript: The Definitive Guide, 5th Edition" Девила Фленегана, и всё никак не могу догнать что скрывается под словом closure. Надеюсь информация за ссылками немного прояснит ситуацию.
Кстати, указанную выше книгу очень рекомендую.
Рекомендую посмотреть лекции Дугласа Крокфорда:
http://developer.yahoo.com/yui/theater/
* The JavaScript Programming Language
* An Inconvenient API: The Theory of the DOM
* Advanced JavaScript
ну и потом все остальные
В какой-то из лекций Дуглас очень доходчиво объяснял про closure.
Для таких лузеров как я, русская версия про замыкание http://javascript.ru/tags/closure
Интересная заметка, как раз искал инфу по этой теме.
Отправить комментарий