All streams
Search
Write a publication
Pull to refresh
17
0
Иван @sompylasar

Пользователь

Send message
Суровый преподаватель МГТУ

Долго смеялся, увидев эту картинку во время прочтения абзаца о том, какие хорошие преподаватели в МГТУ. 5 баллов!
Да, я придираюсь к формулировкам, поскольку в них — ключ к пониманию того, что происходит на самом деле. И Вам в первую очередь следует обратить внимание на четкость формулировок и последовательность изложения текста. Можно было бы написать Вам это в личном сообщении, но мне хотелось открыть немного глаза тем, кто попытается осилить Ваш текст. Прошу прощения еще раз, если сообщение оказалось слишком гневным, но мне жаль тех, кто будет изучать JavaScript по этому тексту.

И да, я дочитал статью до конца, поэтому и посоветовал другим читателям (и вам тоже) поучиться у профессионалов JavaScript мирового уровня.
свойство prototype… перестаёт быть ссылкой и становится объектом

Простите, Вам бы самому подучить и, главное, понять терминологию, которую вы используете…

Свойство не может быть ссылкой или объектом. Значение свойства может быть примитивным значением (необернутые числа, строки) или ссылкой на объект.

Много текста, а из полезного только картинки, и те в JPG.

/*А при таком подходе B.prototype = {constructor:B, x:10, y:20}; добавления свойств в прототип
с экземпляром ничего не происходит*/

Здесь вообще ересь написана. Это не добавление свойств в прототип, а замещение прототипа новым объектом. И в первую очередь нужно объяснить, что {} создаёт объект, и что 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/ ).
Этот код теперь выложили в open source: code.google.com/p/turing-doodle/ — может кому пригодится эта ссылка.

На www.google.com/doodles/alan-turings-100th-birthday написали:
The code for this doodle has been open sourced.

«Не раскрывайте секрет вкуса нового Dirol Mega Mystery!» ©
Расскажите здесь, в комментариях! Думаю, многим будет интересно.
В set, конечно, без $ (опечатался)

((parent)$this)->hours = $value;
Вы, наверное, имели в виду, для статических переменных. Да, вы правы, забыл о них. Тогда как в C#:

public $hours {
    get { return ((parent)$this)->hours; }
    set { ((parent)$this)->$hours = $value; }
}
Предложенный вариант, как было замечено выше, очень походит на зачатки реализации свойств в C#. Но в нем есть модификатор new, который позволяет заменить родительское свойство, а к замененному обращаться через приведение типов.

Переопределять в предложенном варианте PHP, полагаю, так:

public $hours {
    get { return parent::$hours; }
    set { parent::$hours = $value; }
}
Лучше уж тогда именованные, чтобы было видно, что присваиваешь. А так не только нужно порядок помнить, но и рефакторить невозможно простым поиском имени по файлам.
Возможно, слишком иносказательно, но я пытался обратить внимание на другую проблему, которая существует как минимум в Delphi и .NET, а вообще и в других библиотеках графических компонентов. Это невозможность в обработчике события изменения какого-либо свойства определить, что привело к этому изменению: пользовательское действие или программное присваивание. Следовательно, не понятно, сообщать модели об этом изменении или это было обновление представления из нашего кода. Вы в простом примере галочки во избежание рекурсии («чего-то страшного») сравнили старое и новое значение. Но что делать, если модель более сложная, и простое сравнение невозможно, либо модель нужно оповещать об установке любого значения (например, для логирования)?
А как быть с вариантами переключения состояния checkbox не только по OnClick, но и по, например, хоткею spacebar при фокусе на галочке? Предрекаю предложение использовать OnChange, но тогда как отличить change программный от change'а пользовательского?
В презентации в коде опечатка, а Вы просто переписали:

function getScroll(elem, iscroll) {
    // ...
    x = elem.scrollTop;
    y = elem.scrollLeft;
    // ...
}


x по идее должен соответствовать scrollLeft, а y, соответственно, — scrollTop.

Если в этом есть какая-то хитрость, напишите об этом (в оригинале не говорится).
Интересно, кто сможет осилить хотя бы прочтение этих миллионов писем? Не говоря уже об осознании и анализе.
Сообразительный террорист берет флаг, рисует на нем "+x" и… Ну, вы поняли.
github.com/kaler/CrashKit
crashkitapp.appspot.com/

CrashKit catches uncaught exceptions, traps signals, and sends them to developers by email or straight to your bug database.

Exception reports will be automatically sent to our servers and presented for you to view them on the web.
Всё это хорошо, но когда же наконец начнут разработчики iOS уважать веб-разработчиков и действительно реализовывать стандарты, а не делать криво работающие заглушки?..

Яркий пример: воспроизведение видео 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 — единственный доступный, причем даже для сторонних браузеров. И его даже можно настроить немного — но только из нативного приложения!

И самое обидное то, что это есть результат политики компании, поскольку с нативных приложений они имеют доход, а с открытого веба такого механизма, естественно, нет…
Да, действительно, внимание расплылось совсем. Признаю свою ошибку.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity