Отличная книга. Глубокий разбор материала, хорошая структура: в начале полное изучение базовых объектов 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
- Алфавитный указатель
так намного удобнее ориентироваться в книге, как в справочнике.
Вот сделал справку по данной книге:JavaScript (client).chm
Оформил Часть IV. Справочник по клиентскому JavaScript в файле CHM. Очень не хватало такого варианта при изучении языка. В CHM удобно пользоваться поиском, лучше чем в PDF.
Вставил содержание для разделов в PDF:
- Часть III. Справочник по базовому JavaScript
- Часть IV. Справочник по клиентскому JavaScript
- Алфавитный указатель
Скачать можно тут JavaScript.pdf
обсуждение на метсном форумеСделал справку файл-CHM: JavaScript (клиенсткий)
Книга очень хорошая, но конечно не могу сказать что она пойдет тем кто совсем не имеет навыков программирования, у меня он не большой но тем не менее содержание пока понятно.
Книга супер, но для начала я прочитал 300 страниц какого-то друг о-го учебника, ну не сильно хорошего, но зато потом эту книгу начал читать в распечатанном виде, всё просто супер, очень, даже очень всё подробно, советую))
Хорошая литература.
Тоже очень понравился излагаемый материал, и сравнение с С++ и Java.
Новичкам должна подойти, но тем которые хоть чуть-чуть имели дело с програмированием...
Какая-ж это скотина надаумила автора написать такую огромную книгу - 982 страницы! У меня школа, которая высасывает все соки, и хочется изучить Javascript. Может подскажете, что нибудь может выбрать из этой книги, а не всю читать? Или какую нибудь другую книгу поменьше на русском языке подскажете! Ну это невозможно читать тыщу страниц - тягомотина, которая незнамо когда кончится!
Чувак, это же Книга с Носорогом! Если ты хочешь знать js, то ты обязан прочитать ее до конца. Не все прошли этот путь, но о тех, кто это сделал, ходят легенды. Они покинули план бытия javascript.ru, потому что у них не осталось больше вопросов и лишь самоотверженные бодхисаттвы спускаются с высот Прочитавших Книгу с Носорогом, дабы посеять мудрость среди остальных.
Странно, что все радуются и никто не отмечает наличие некоторого числа опечаток в переводе (не в оригинале, конечно):
стр. 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 и еще пытался каких-то наших авторов - там не особо как-то раскрываются принципы работы языка. А данная книга одновременно и проста и глубока в вопросах понимания принципов языка.
Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены. Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Отличная книга. Глубокий разбор материала, хорошая структура: в начале полное изучение базовых объектов 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().
Поэтому возникла данная двойственная ситуация.
зы
А оптимизирует ли компилятор код или нет - это уже неважно, в данной конкретной ситуации.
Первый код
var pass = new String("абвгд"); var pass2 = new String("абвгд"); alert(pass2 == pass);- результат false
Второй код
var pass = new String("абвгд"); var pass2 = new String("абвгд"); alert(pass2 === pass);- результат тоже false
Третий код
var pass = "абвгд"; var pass2 = new String("абвгд"); alert(pass2 == pass);- результат true
Четвертый код
var pass = "абвгд"; var pass2 = new String("абвгд"); alert(pass2 === pass);- результат false
Пятый код
- результат true
Шестой код
- результат true
Храни Господь человека выложившева эту книгу
Чтото никак не открывается скачиваемый файл. Качаю, получается файл pdf объемом 5891 кб, при открытии 5-м акробатом, пишет что файл поврежден.
Ай-яй! Воровать - не хорошо.) Советую скачать, ознакомиться, удалить, купить. Пунукт "Купить" - обязательный, так как книга лучшая по теме. Дени Гудман не идет ни в какое сравнение.
Хорошо бы в закладках добавить расшифровку пунктов:
- Часть III. Справочник по базовому JavaScript
- Часть IV. Справочник по клиентскому JavaScript
- Алфавитный указатель
так намного удобнее ориентироваться в книге, как в справочнике.
спасибо огромное за книгу)везде ее с депозитов да литетбитов качать над,а я сейчас не дома и интернет только с кпк)вобщем файлу однозначно +5)
Вот сделал справку по данной книге:JavaScript (client).chm
Оформил Часть IV. Справочник по клиентскому JavaScript в файле CHM. Очень не хватало такого варианта при изучении языка. В CHM удобно пользоваться поиском, лучше чем в PDF.
Вставил содержание для разделов в PDF:
- Часть III. Справочник по базовому JavaScript
- Часть IV. Справочник по клиентскому JavaScript
- Алфавитный указатель
Скачать можно тут JavaScript.pdf
обсуждение на метсном форумеСделал справку файл-CHM: JavaScript (клиенсткий)
Книга очень хорошая, но конечно не могу сказать что она пойдет тем кто совсем не имеет навыков программирования, у меня он не большой но тем не менее содержание пока понятно.
Книга супер, но для начала я прочитал 300 страниц какого-то друг о-го учебника, ну не сильно хорошего, но зато потом эту книгу начал читать в распечатанном виде, всё просто супер, очень, даже очень всё подробно, советую))
Вор должен сидеть в тюрьме
Хорошая литература.
Тоже очень понравился излагаемый материал, и сравнение с С++ и Java.
Новичкам должна подойти, но тем которые хоть чуть-чуть имели дело с програмированием...
Какая-ж это скотина надаумила автора написать такую огромную книгу - 982 страницы! У меня школа, которая высасывает все соки, и хочется изучить Javascript. Может подскажете, что нибудь может выбрать из этой книги, а не всю читать? Или какую нибудь другую книгу поменьше на русском языке подскажете! Ну это невозможно читать тыщу страниц - тягомотина, которая незнамо когда кончится!
Чувак, это же Книга с Носорогом! Если ты хочешь знать js, то ты обязан прочитать ее до конца. Не все прошли этот путь, но о тех, кто это сделал, ходят легенды. Они покинули план бытия javascript.ru, потому что у них не осталось больше вопросов и лишь самоотверженные бодхисаттвы спускаются с высот Прочитавших Книгу с Носорогом, дабы посеять мудрость среди остальных.
В любом случае, если некогда, то могу посоветовать Учебник по основным элементам языка и Справочник.
Ссылка не работает!
Работает! Только что скачал
Javascript Cookbook 2010
Еще одна книжка. Думаю она имеет место быть в этом разделе.
Одна из лучших книг
Мне также понравилась Professional JavaScript for Developers 2 edition N.Zakas
Error (509)
This account's public links are generating too much traffic and have been temporarily disabled!
Ссылка не работает!
Странно, что все радуются и никто не отмечает наличие некоторого числа опечаток в переводе (не в оригинале, конечно):
откуда двоеточие?
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 порадовал , после прочтения которого рабочий код не написал .Большая часть кода в книге никогда не встретится в вашей практике . И да , нормальной практикой в языках является официальная документация , а не нудные пересказывания принципов работы функций .
Написанное Вами не согласуется с тем, что это уже 5ое по счету изданием книги
1. Думаю, что некоторые примеры и впрямь ужЕ не работают, поскольку постоянно ужесточаются правила безопастности в броузерах, и еще, как было выше замечено, в русском варианте книги имеются опечатки в программном коде - позор редакторам и издательству.
2. Официальная документация - для профессиональных программистов больше подойдет (я, например, тоже не стану читать книги по азам софта для дизайна-верстки, поскольку в этом профессионал, теперь только справочники и конкретные темы в форумах). После прочтения половины данной книги я наконец стал немного въезжать в принципы программирования вообще и в JS в частности.
До этого читал JS для чайников, C++ для чайников, библию JS и еще пытался каких-то наших авторов - там не особо как-то раскрываются принципы работы языка. А данная книга одновременно и проста и глубока в вопросах понимания принципов языка.
Спасибо. Книга действительно стоящая внимания и прочтения.
Error (509)
This account's public links are generating too much traffic and have been temporarily disabled!
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.