Да, я придираюсь к формулировкам, поскольку в них — ключ к пониманию того, что происходит на самом деле. И Вам в первую очередь следует обратить внимание на четкость формулировок и последовательность изложения текста. Можно было бы написать Вам это в личном сообщении, но мне хотелось открыть немного глаза тем, кто попытается осилить Ваш текст. Прошу прощения еще раз, если сообщение оказалось слишком гневным, но мне жаль тех, кто будет изучать JavaScript по этому тексту.
И да, я дочитал статью до конца, поэтому и посоветовал другим читателям (и вам тоже) поучиться у профессионалов JavaScript мирового уровня.
свойство prototype… перестаёт быть ссылкой и становится объектом
Простите, Вам бы самому подучить и, главное, понять терминологию, которую вы используете…
Свойство не может быть ссылкой или объектом. Значение свойства может быть примитивным значением (необернутые числа, строки) или ссылкой на объект.
Много текста, а из полезного только картинки, и те в JPG.
/*А при таком подходе B.prototype = {constructor:B, x:10, y:20}; добавления свойств в прототип
с экземпляром ничего не происходит*/
Здесь вообще ересь написана. Это не добавление свойств в прототип, а замещение прототипа новым объектом. И в первую очередь нужно объяснить, что {} создаёт объект, и что x = { a: 5 }; это то же самое, что x = new Object(); x.a = 5; и так далее по всему тексту такие ляпы, которые на самом деле только запутывают.
Лучше уж тогда именованные, чтобы было видно, что присваиваешь. А так не только нужно порядок помнить, но и рефакторить невозможно простым поиском имени по файлам.
Возможно, слишком иносказательно, но я пытался обратить внимание на другую проблему, которая существует как минимум в Delphi и .NET, а вообще и в других библиотеках графических компонентов. Это невозможность в обработчике события изменения какого-либо свойства определить, что привело к этому изменению: пользовательское действие или программное присваивание. Следовательно, не понятно, сообщать модели об этом изменении или это было обновление представления из нашего кода. Вы в простом примере галочки во избежание рекурсии («чего-то страшного») сравнили старое и новое значение. Но что делать, если модель более сложная, и простое сравнение невозможно, либо модель нужно оповещать об установке любого значения (например, для логирования)?
А как быть с вариантами переключения состояния checkbox не только по OnClick, но и по, например, хоткею spacebar при фокусе на галочке? Предрекаю предложение использовать OnChange, но тогда как отличить change программный от change'а пользовательского?
Всё это хорошо, но когда же наконец начнут разработчики iOS уважать веб-разработчиков и действительно реализовывать стандарты, а не делать криво работающие заглушки?..
Большинство действительно не сталкивается с этим, поскольку не делает ничего сложнее воспроизведения файлов с видеохостинга.
Ко всему этому, движок Safari — единственный доступный, причем даже для сторонних браузеров. И его даже можно настроить немного — но только из нативного приложения!
И самое обидное то, что это есть результат политики компании, поскольку с нативных приложений они имеют доход, а с открытого веба такого механизма, естественно, нет…
Долго смеялся, увидев эту картинку во время прочтения абзаца о том, какие хорошие преподаватели в МГТУ. 5 баллов!
И да, я дочитал статью до конца, поэтому и посоветовал другим читателям (и вам тоже) поучиться у профессионалов JavaScript мирового уровня.
Простите, Вам бы самому подучить и, главное, понять терминологию, которую вы используете…
Свойство не может быть ссылкой или объектом. Значение свойства может быть примитивным значением (необернутые числа, строки) или ссылкой на объект.
Много текста, а из полезного только картинки, и те в JPG.
Здесь вообще ересь написана. Это не добавление свойств в прототип, а замещение прототипа новым объектом. И в первую очередь нужно объяснить, что
{}
создаёт объект, и чтоx = { a: 5 };
это то же самое, чтоx = new Object(); x.a = 5;
и так далее по всему тексту такие ляпы, которые на самом деле только запутывают.Рекомендую следующие презентации, которые коротко и четко описывают основные особенности JavaScript, которые попытался изложить автор этой статьи, и даже больше:
www.slideshare.net/Dmitry.Baranovskiy/demystifying-prototypes-6183470
www.slideshare.net/Sampetruda/advanced-javascript-closures-prototypes-and-inheritance
googlesystem.blogspot.com/2012/08/googles-new-favicon.html
Почему-то эта новость оказалась не так популярна, как про Microsoft ( habrahabr.ru/post/150128/ ).
На www.google.com/doodles/alan-turings-100th-birthday написали:
set
, конечно, без$
(опечатался)Переопределять в предложенном варианте PHP, полагаю, так:
x
по идее должен соответствоватьscrollLeft
, аy
, соответственно, —scrollTop
.Если в этом есть какая-то хитрость, напишите об этом (в оригинале не говорится).
crashkitapp.appspot.com/
Яркий пример: воспроизведение видео HTML5 (речь не о поддерживаемых типах и кодеках, а о реализации самого API).
blog.millermedeiros.com/unsolved-html5-video-issues-on-ios/
blog.millermedeiros.com/ipad-is-the-new-ie6/
blog.millermedeiros.com/html5-video-issues-on-the-ipad-and-how-to-solve-them/
Большинство действительно не сталкивается с этим, поскольку не делает ничего сложнее воспроизведения файлов с видеохостинга.
Ко всему этому, движок Safari — единственный доступный, причем даже для сторонних браузеров. И его даже можно настроить немного — но только из нативного приложения!
И самое обидное то, что это есть результат политики компании, поскольку с нативных приложений они имеют доход, а с открытого веба такого механизма, естественно, нет…