Отличная книга. Глубокий разбор материала, хорошая структура: в начале полное изучение базовых объектов JS. Отсутствие ненужных (читай устаревших) свойств и методов. Гораздо лучше Библии пользователя. Скачал недавно с торрента - вот, читаю.
Отличная книга.
Не уверен что подойдёт новичкам, а тем кто разбирается в ООП - превосходное руководство по изучению данного языка.
Хотя автор проводит много параллелей между javaScript, Java и C++ - это хорошо, но делает он это (мне кажется) субъективно.
Он говорит, что JavaScript - это "чистый ООП язык", приводя аналогии с Java.
Зачем ? Мощь JavaScript в том, что он не чистый ООП. (по крайне мере НЕ ЧИСТЫЙ).
И ещё он ошибся на 66 стр., говоря, что в JavaScript строки сравниваются по значению, не так как в Java (по ссылке). Потому, что в Java для класса String тоже сделано исключение и оператор "==" и метод equals() - сравнивают строки по значению.
А в целом - грамотно... приятно читать.
в Java даёт результат true.
Единственное разумное объяснение - это сравнение не ссылок на String а их содержимого. Почему сделали такую двойственную ситуацию - непонятно?
Оказывается компилятор, в целях экономии, не создаёт второго объекта, если он указывает на строку, которая уже есть в памяти, а "в тихую" присваивает на неё ссылку. Поэтому в моём случае true.
Грубо говоря, в приведённом примере компилятор будет делать оптимизацию.
Строку String str2 = "q" + "w" + "e" + "rty"; компилятор преобразует в String str2 = "qwerty"; ещё на этапе компиляции. А так как эти строки одинаковы и не были созданы при помощи new , то компилятор автоматически создаст один статический объект
String("qwerty") и обоим переменным присвоит ссылку на этот объект.
Оказывается дело ещё запутаннее, т.к. в деле замешан метод hashCode().
Для строк созданных через new, как и положено, наследуется из Object стандартный метод hashCode(), который возвращает адрес объекта. Поэтому сравнение будет по адресам объектов.
А для строки-литерала, метод hashCode() возвращает хэш строкИ, а не её адрес. И это логично, даже не смотря на то, что компилятор неявно создаёт для строки-литерала объект String (всё-таки создаёт ). Метод hashCode() в нём перегружен, и возвращает хэш строки. Поэтому сравниваются строки или их хэши.
Метод hashCode() должен быть логически связан с методами сравнения == и equals().
Поэтому возникла данная двойственная ситуация.
зы
А оптимизирует ли компилятор код или нет - это уже неважно, в данной конкретной ситуации.
Ай-яй! Воровать - не хорошо.) Советую скачать, ознакомиться, удалить, купить. Пунукт "Купить" - обязательный, так как книга лучшая по теме. Дени Гудман не идет ни в какое сравнение.
Скачал - НЕ УКРАЛ! Хотел-бы купить бумажную версию, но возможности на сегодня не имею; когда возможность появится, эта книга будет уже не актуальна, - отсюда: я не куплю эту книгу ни сегодня, ни "завтра", а значит останусь "тупым" навечно ...Я не качал этой книги, но она действительно хороша; хороша настолько, что я спздл "твёрдую" версию у приятеля, - ведь он её не читает, он просто коллекционирует хорошие книги
"Вор, укравший книгу (чтобы прочитать, а не для продажи), вором не является". Точно не помню кто сказал, но кто-то из восточных мыслителей. То ли Будда, то ли Кун Цзы. Тем более, что образованный человек рано или поздно наверняка сам захочет отблагодарить своего учителя...
Хорошо бы в закладках добавить расшифровку пунктов:
- Часть III. Справочник по базовому JavaScript
- Часть IV. Справочник по клиентскому JavaScript
- Алфавитный указатель
так намного удобнее ориентироваться в книге, как в справочнике.
Книга очень хорошая, но конечно не могу сказать что она пойдет тем кто совсем не имеет навыков программирования, у меня он не большой но тем не менее содержание пока понятно.
Книга супер, но для начала я прочитал 300 страниц какого-то друг о-го учебника, ну не сильно хорошего, но зато потом эту книгу начал читать в распечатанном виде, всё просто супер, очень, даже очень всё подробно, советую))
Хорошая литература.
Тоже очень понравился излагаемый материал, и сравнение с С++ и Java.
Новичкам должна подойти, но тем которые хоть чуть-чуть имели дело с програмированием...
Странно, что все радуются и никто не отмечает наличие некоторого числа опечаток в переводе (не в оригинале, конечно):
стр. 110, определение "break: имя_метки;"
откуда двоеточие?
стр. 130, с 8-й строки сверху
var count = [1,,3]; // Массив из 3 элементов, средний элемент не определен
var undefs = [,,]; // Массив из 2 элементов, оба не определены.
это уже не так серьезно, скорее забавно
Еще не смотрел в клиентской части. Интересно, то же самое и в бумажном варианте?
Но в в целом книга конечно же замечательная.
Помогите чайнику разобраться!
А именно, часть о назначении значения по умолчанию. Я что-то не понял принцип...
8.2.3. Использование свойств объекта в качестве аргументов
// Эта версия функции чуть менее эффективная, но не требует
// запоминать порядок следования аргументов, а аргументы from_start
// и to_start по умолчанию принимают значение 0.
function easycopy(args) {
arraycopy(args.from, args.from_start || 0, // Обратите внимание, как назначаются
// значения по умолчанию
args.to,
args.to_start || 0,
args.length);
}
Смысл в том, что оператор "||" (ИЛИ) вернет первый не-false операнд. Т.е. если параметр функции не передан он будет равен null, а выражение null || 0 - вернет 0, так как null преобразуется в false. А вообще, это в самой книге подробно описано (см. Логическое ИЛИ)
Мда , книга прям "водный мир" , можно утонуть .
Полезна только за справочный раздел .
Что язык без не имеет официальной документации ,кроссбраузерности , полной поддержки DOM во всех браузерах --- мелочь , когда автор художественным слогом пересказывает спецификацию ECMAscript. Читать это треш можно на ночь , отличное снотворное .
После прочтения нескольких глав вы захочете писать какой-то код и "вуаля" , он не работает как вы задумали , а почему - в книге ответов нет . Посему книга больше вопросов создает после прочтения , нежели даёт ответов .Особенно меня раздел ajax порадовал , после прочтения которого рабочий код не написал .Большая часть кода в книге никогда не встретится в вашей практике . И да , нормальной практикой в языках является официальная документация , а не нудные пересказывания принципов работы функций .
1. Думаю, что некоторые примеры и впрямь ужЕ не работают, поскольку постоянно ужесточаются правила безопастности в броузерах, и еще, как было выше замечено, в русском варианте книги имеются опечатки в программном коде - позор редакторам и издательству.
2. Официальная документация - для профессиональных программистов больше подойдет (я, например, тоже не стану читать книги по азам софта для дизайна-верстки, поскольку в этом профессионал, теперь только справочники и конкретные темы в форумах). После прочтения половины данной книги я наконец стал немного въезжать в принципы программирования вообще и в JS в частности.
До этого читал JS для чайников, C++ для чайников, библию JS и еще пытался каких-то наших авторов - там не особо как-то раскрываются принципы работы языка. А данная книга одновременно и проста и глубока в вопросах понимания принципов языка.
Хотелось бы отметить, что книга на самом деле 2006 года. 2008 год это издание перевода на русском. В ней описывается EcmaScript v3. Для сравнения в более новом издании книги (которое еще не перевели на русский) рассматривается уже EcmaScript v5. Но читать сразу с ходу эту книгу на английском для меня тяжело, сначала думаю прочитать на более понятном для меня языке.
Читать эту книгу новичкам в программировании я бы не советовал. Чтобы понять некоторые главы книги при первом прочтении, нужно как минимум знать азы языка С или С++. И еще Java тоже упоминается в книге. Например представление о том, что такое указатели, так как в книге рассматривается копирование, передача и сравнение по значению и по ссылке. Там конечно это все объясняется, но человеку, который с этим никогда не сталкивался трудно будет понять.
это правильно, что есть ссылка на скачивание ?
при том, что JavaScript.ru не одобряет пиратство.
Я купил электронную версию
Книжка отличная, надо бы дочитать
Не знаю, почему все так молятся на эту книгу. Может охват книги и велик, но автор не умеет излагать вещи доступно и понятно. Грамматические конструкции с изобилием терминов заграмождают всё понимание. Автор придерживается жёсткой терминологии и сухого повествования, хотя в большинстве случаев более неформальный стиль повествования был бы гораздо эффективнее. Если бы это был мой первый язык программирования, то не представляю, как бы я разобрался по этой книге. Судя по отзывам остальные книги ещё хуже, вот и непонятно, то ли язык такой кудрявый, что его не выразить никак по-человечески, либо просто с авторами не везёт.
Лучше как вторую книжку.
Она наиболее полная по этой теме и точно расставит все точки над "и".
Но если вобще нет знакомства с джиэс - рекомендую начать с Good Parts Дугласа Крокфорда. Она короткая (около 200стр против около 1000 в носороге), даст общее впечатление о языке, и поможет не попасть в ловушки, так как джиэс дает много свободы для плохого кода
1. На данный момент лучше читать 6-е издание книги (здесь 5-е), чтобы не читать зря 1000 страниц про устаревший ECMASCRIPT 3, а сразу начать с более актуальной 5-ой версии Тем более что автор все равно к нему периодически возвращается, наверное из ностальгических соображений... Скачать или купить проблемы нет, книжка есть и в торрентах, и на амазоне, и в наших магазинах.
2. Чтиво тяжелое, очень много перекрестных ссылок туда-сюда. Читать банально неудобно, особенно если вы новичок. Текст очень сухой, формальный, рекомендую читать эту книжку перед сном Выглядит это все примерно так: "рассмотрим штучку N, которую мы исследовали в разделе $3.2.1.24.5, и используем фишку M, с которой мы сталкивались в разделе $4.3.2.34. И в итоге получим функционал L, но мы сейчас подробно описывать его не будем, а отложим на раздел $9.4.2.1". Без шуток
3. Новичку бы я порекомендовал что-то более дружелюбное почитать сначала, тут уже вроде в комментах рекомендовали разные варианты. А опытный в этой книге много чего будет по диагонали читать, т.к. очевидностей и лишней информации в этой книге тоже хватает
Отличная книга. Глубокий разбор материала, хорошая структура: в начале полное изучение базовых объектов JS. Отсутствие ненужных (читай устаревших) свойств и методов. Гораздо лучше Библии пользователя. Скачал недавно с торрента - вот, читаю.
Эта книга уже здесь...
чтобы понять о чем эта книга, следует первоначально прочитать Дени Гудмана.
Отличная книга.
Не уверен что подойдёт новичкам, а тем кто разбирается в ООП - превосходное руководство по изучению данного языка.
Хотя автор проводит много параллелей между javaScript, Java и C++ - это хорошо, но делает он это (мне кажется) субъективно.
Он говорит, что JavaScript - это "чистый ООП язык", приводя аналогии с Java.
Зачем ? Мощь JavaScript в том, что он не чистый ООП. (по крайне мере НЕ ЧИСТЫЙ).
И ещё он ошибся на 66 стр., говоря, что в JavaScript строки сравниваются по значению, не так как в Java (по ссылке). Потому, что в Java для класса String тоже сделано исключение и оператор "==" и метод equals() - сравнивают строки по значению.
А в целом - грамотно... приятно читать.
Он не ошибся на 66 странице.
String str1 = "qwe";
String str2 = new String("qwe");
System.out.println(str1 == str2);
В джаве результат выдаёт false, т.к. сравниваются две ссылки указывающие на разные объекты.
Да, действительно - ты прав, я до конца все варианты не проверил, поспешил с выводами, ОДНАКО
я почему так решил, вот такой пример:
в Java даёт результат true.
Единственное разумное объяснение - это сравнение не ссылок на String а их содержимого. Почему сделали такую двойственную ситуацию - непонятно?
Оказывается компилятор, в целях экономии, не создаёт второго объекта, если он указывает на строку, которая уже есть в памяти, а "в тихую" присваивает на неё ссылку. Поэтому в моём случае true.
ps
приношу извинения автору Дэвиду Флэнэгану
Грубо говоря, в приведённом примере компилятор будет делать оптимизацию.
Строку String str2 = "q" + "w" + "e" + "rty"; компилятор преобразует в String str2 = "qwerty"; ещё на этапе компиляции. А так как эти строки одинаковы и не были созданы при помощи new , то компилятор автоматически создаст один статический объект
String("qwerty") и обоим переменным присвоит ссылку на этот объект.
Вот поэтому и получается в данном примере true
Оказывается дело ещё запутаннее, т.к. в деле замешан метод hashCode().
Для строк созданных через new, как и положено, наследуется из Object стандартный метод hashCode(), который возвращает адрес объекта. Поэтому сравнение будет по адресам объектов.
А для строки-литерала, метод hashCode() возвращает хэш строкИ, а не её адрес. И это логично, даже не смотря на то, что компилятор неявно создаёт для строки-литерала объект String (всё-таки создаёт ). Метод hashCode() в нём перегружен, и возвращает хэш строки. Поэтому сравниваются строки или их хэши.
Метод hashCode() должен быть логически связан с методами сравнения == и equals().
Поэтому возникла данная двойственная ситуация.
зы
А оптимизирует ли компилятор код или нет - это уже неважно, в данной конкретной ситуации.
Первый код
- результат false
Второй код
- результат тоже false
Третий код
- результат true
Четвертый код
- результат false
Пятый код
- результат true
Шестой код
- результат true
В Java строки сравниваются по ссылке всё-таки (ведь это объекты). Вы путаете пул строк и исключения.
Храни Господь человека выложившева эту книгу
Чтото никак не открывается скачиваемый файл. Качаю, получается файл pdf объемом 5891 кб, при открытии 5-м акробатом, пишет что файл поврежден.
Версия pdf на котором написан этот учебник - 1.6, читается acrobat-ом версии от 7.x и выше.
Ай-яй! Воровать - не хорошо.) Советую скачать, ознакомиться, удалить, купить. Пунукт "Купить" - обязательный, так как книга лучшая по теме. Дени Гудман не идет ни в какое сравнение.
Скачал - НЕ УКРАЛ! Хотел-бы купить бумажную версию, но возможности на сегодня не имею; когда возможность появится, эта книга будет уже не актуальна, - отсюда: я не куплю эту книгу ни сегодня, ни "завтра", а значит останусь "тупым" навечно ...Я не качал этой книги, но она действительно хороша; хороша настолько, что я спздл "твёрдую" версию у приятеля, - ведь он её не читает, он просто коллекционирует хорошие книги
"Вор, укравший книгу (чтобы прочитать, а не для продажи), вором не является". Точно не помню кто сказал, но кто-то из восточных мыслителей. То ли Будда, то ли Кун Цзы. Тем более, что образованный человек рано или поздно наверняка сам захочет отблагодарить своего учителя...
Хорошо бы в закладках добавить расшифровку пунктов:
- Часть III. Справочник по базовому JavaScript
- Часть IV. Справочник по клиентскому JavaScript
- Алфавитный указатель
так намного удобнее ориентироваться в книге, как в справочнике.
спасибо огромное за книгу)везде ее с депозитов да литетбитов качать над,а я сейчас не дома и интернет только с кпк)вобщем файлу однозначно +5)
Книга очень хорошая, но конечно не могу сказать что она пойдет тем кто совсем не имеет навыков программирования, у меня он не большой но тем не менее содержание пока понятно.
Книга супер, но для начала я прочитал 300 страниц какого-то друг о-го учебника, ну не сильно хорошего, но зато потом эту книгу начал читать в распечатанном виде, всё просто супер, очень, даже очень всё подробно, советую))
Вор должен сидеть в тюрьме
Хорошая литература.
Тоже очень понравился излагаемый материал, и сравнение с С++ и Java.
Новичкам должна подойти, но тем которые хоть чуть-чуть имели дело с програмированием...
Ссылка не работает!
Работает! Только что скачал
Javascript Cookbook 2010
Еще одна книжка. Думаю она имеет место быть в этом разделе.
Одна из лучших книг
Мне также понравилась Professional JavaScript for Developers 2 edition N.Zakas
Странно, что все радуются и никто не отмечает наличие некоторого числа опечаток в переводе (не в оригинале, конечно):
откуда двоеточие?
var count = [1,,3]; // Массив из 3 элементов, средний элемент не определен
var undefs = [,,]; // Массив из 2 элементов, оба не определены.
это уже не так серьезно, скорее забавно
Еще не смотрел в клиентской части. Интересно, то же самое и в бумажном варианте?
Но в в целом книга конечно же замечательная.
По спецификации последний пустой элемент ',]' игнорируется. Из-за этого во втором случае будет только 2 неопределенных элемента в массиве
Помогите чайнику разобраться!
А именно, часть о назначении значения по умолчанию. Я что-то не понял принцип...
8.2.3. Использование свойств объекта в качестве аргументов
// Эта версия функции чуть менее эффективная, но не требует
// запоминать порядок следования аргументов, а аргументы from_start
// и to_start по умолчанию принимают значение 0.
function easycopy(args) {
arraycopy(args.from,
args.from_start || 0, // Обратите внимание, как назначаются
// значения по умолчанию
args.to,
args.to_start || 0,
args.length);
}
Смысл в том, что оператор "||" (ИЛИ) вернет первый не-false операнд. Т.е. если параметр функции не передан он будет равен null, а выражение null || 0 - вернет 0, так как null преобразуется в false. А вообще, это в самой книге подробно описано (см. Логическое ИЛИ)
Силька для скачивания книги не работает.! Дайте робочую сильку.
Мда , книга прям "водный мир" , можно утонуть .
Полезна только за справочный раздел .
Что язык без не имеет официальной документации ,кроссбраузерности , полной поддержки DOM во всех браузерах --- мелочь , когда автор художественным слогом пересказывает спецификацию ECMAscript. Читать это треш можно на ночь , отличное снотворное .
После прочтения нескольких глав вы захочете писать какой-то код и "вуаля" , он не работает как вы задумали , а почему - в книге ответов нет . Посему книга больше вопросов создает после прочтения , нежели даёт ответов .Особенно меня раздел ajax порадовал , после прочтения которого рабочий код не написал .Большая часть кода в книге никогда не встретится в вашей практике . И да , нормальной практикой в языках является официальная документация , а не нудные пересказывания принципов работы функций .
Написанное Вами не согласуется с тем, что это уже 5ое по счету изданием книги
1. Думаю, что некоторые примеры и впрямь ужЕ не работают, поскольку постоянно ужесточаются правила безопастности в броузерах, и еще, как было выше замечено, в русском варианте книги имеются опечатки в программном коде - позор редакторам и издательству.
2. Официальная документация - для профессиональных программистов больше подойдет (я, например, тоже не стану читать книги по азам софта для дизайна-верстки, поскольку в этом профессионал, теперь только справочники и конкретные темы в форумах). После прочтения половины данной книги я наконец стал немного въезжать в принципы программирования вообще и в JS в частности.
До этого читал JS для чайников, C++ для чайников, библию JS и еще пытался каких-то наших авторов - там не особо как-то раскрываются принципы работы языка. А данная книга одновременно и проста и глубока в вопросах понимания принципов языка.
Спасибо. Книга действительно стоящая внимания и прочтения.
Хотелось бы отметить, что книга на самом деле 2006 года. 2008 год это издание перевода на русском. В ней описывается EcmaScript v3. Для сравнения в более новом издании книги (которое еще не перевели на русский) рассматривается уже EcmaScript v5. Но читать сразу с ходу эту книгу на английском для меня тяжело, сначала думаю прочитать на более понятном для меня языке.
Уже вышло 6-е издание, правда варианта на русском пока не встречал
Читать эту книгу новичкам в программировании я бы не советовал. Чтобы понять некоторые главы книги при первом прочтении, нужно как минимум знать азы языка С или С++. И еще Java тоже упоминается в книге. Например представление о том, что такое указатели, так как в книге рассматривается копирование, передача и сравнение по значению и по ссылке. Там конечно это все объясняется, но человеку, который с этим никогда не сталкивался трудно будет понять.
Можно спокойно новичку читать, азы C или C++ не нужно знать
Книга суперская!!!! Лучше не встречала.
Скачал, заватра начну читать. Уверен, что будет интересно!
p.s. Книга с носорогом не может быт не интересной))
Так, все читают,начинают читать. А кто нибудь дочитал с начала до конца? не пропуская ничего?=)
Да, прочитал, заставил себя, в некоторых местах ужастно нудная
Почему я не могу скачать мне постоянно выдаёт ошибку 509
Перезалейте, пожалуйста.
Спасибо, классная книжка !
такая книга ДОЛЖНА быть у каждого js программиста под рукой! себе купил и вам советую!
это правильно, что есть ссылка на скачивание ?
при том, что
JavaScript.ru не одобряет пиратство.
Я купил электронную версию
Книжка отличная, надо бы дочитать
Не знаю, почему все так молятся на эту книгу. Может охват книги и велик, но автор не умеет излагать вещи доступно и понятно. Грамматические конструкции с изобилием терминов заграмождают всё понимание. Автор придерживается жёсткой терминологии и сухого повествования, хотя в большинстве случаев более неформальный стиль повествования был бы гораздо эффективнее. Если бы это был мой первый язык программирования, то не представляю, как бы я разобрался по этой книге. Судя по отзывам остальные книги ещё хуже, вот и непонятно, то ли язык такой кудрявый, что его не выразить никак по-человечески, либо просто с авторами не везёт.
Спасибо
Самая лучшая книга из всех которые я читал. Все от начала до конца. Все разложил по полочкам.
Приветствую, хоу спросить у тех кто прочитал книжку. Как она вам? Многому ли вы научились по книжке? Как эта книжка для начинающего?
Лучше как вторую книжку.
Она наиболее полная по этой теме и точно расставит все точки над "и".
Но если вобще нет знакомства с джиэс - рекомендую начать с Good Parts Дугласа Крокфорда. Она короткая (около 200стр против около 1000 в носороге), даст общее впечатление о языке, и поможет не попасть в ловушки, так как джиэс дает много свободы для плохого кода
Что могу отметить:
1. На данный момент лучше читать 6-е издание книги (здесь 5-е), чтобы не читать зря 1000 страниц про устаревший ECMASCRIPT 3, а сразу начать с более актуальной 5-ой версии Тем более что автор все равно к нему периодически возвращается, наверное из ностальгических соображений... Скачать или купить проблемы нет, книжка есть и в торрентах, и на амазоне, и в наших магазинах.
2. Чтиво тяжелое, очень много перекрестных ссылок туда-сюда. Читать банально неудобно, особенно если вы новичок. Текст очень сухой, формальный, рекомендую читать эту книжку перед сном Выглядит это все примерно так: "рассмотрим штучку N, которую мы исследовали в разделе $3.2.1.24.5, и используем фишку M, с которой мы сталкивались в разделе $4.3.2.34. И в итоге получим функционал L, но мы сейчас подробно описывать его не будем, а отложим на раздел $9.4.2.1". Без шуток
3. Новичку бы я порекомендовал что-то более дружелюбное почитать сначала, тут уже вроде в комментах рекомендовали разные варианты. А опытный в этой книге много чего будет по диагонали читать, т.к. очевидностей и лишней информации в этой книге тоже хватает
ссылку обновите, хочу скачать.
или кто перезальёт ?