Сообщение от melky
|
перевод полное говно. я на английском лучше понимал, чем этот промпт.
|
Да книга уже не та (
1. Терминологическая путаница и отсебятина: класс, подкласс, суперкласс, абстрактный класс, модуль, атрибуты (class, prototype, extension) и пр.
2. Вообще лишние главы: Подмножества и расширения JavaScript, Серверный JavaScript, Каскадные таблицы стилей (в этом объёме), Библиотека jQuery
3. Местами полнейший бред:
Цитата:
|
Если присвоить значение переменной, не объявленной с помощью инструкции var, JavaScript неявно объявит эту переменную за вас. Однако переменные, объявленные таким образом, всегда создаются как глобальные, даже если они работают только в теле функции. Чтобы не создавать глобальную переменную (или не использовать существующую), когда достаточно локальной переменной для отдельной функции, всегда помещайте инструкцию var в тело функции. Лучше всего объявлять с ключевым словом var все переменные – и глобальные, и локальные.
|
Никакого неявного объявления переменной не происходит, и это легко проверить, т.к. в отличии от свойств (в данном случае речь идет о свойствах глобального объекта) переменные нельзя удалить.
В этом правиле есть только одно исключение и оно четко прописано в стандарте:
'use strict';
global = 1;
alert(global) // ReferenceError
Цитата:
|
addEventListener()
Спецификация со временем может измениться так, что
будет допустимо опускать третий аргумент вместо того, чтобы явно передавать
в нем значение false, но на момент написания этих строк отсутствие третьего
аргумента в некоторых текущих броузерах приводила к ошибке.
|
Вместо того чтобы указать на спецификацию DOM Level 3 Events, какие-то догадки.
Цитата:
|
addEventListener()
Вторым аргументом
методу addEventListenerQ передается функция, которая должна вызываться при
возникновении события указанного типа.
|
Полный бред!
Такое чувство что он даже не заглядывал в спецификацию DOM Level 2 Events:
<script>
function EventListener(element, phase)
{
var listener = {
addEvent: function (type, callback)
{
var stack = (this["@" + type] || (this["@" + type] = []));
if (!~stack.indexOf(callback))
stack.push(callback);
return this;
},
handleEvent: function (event)
{
var stack = this["@" + event.type];
if (stack)
{
stack.forEach(function (callback, index, stack)
{
if (callback.call(this, event, callback, this) === false) {
this["@" + event.type] = stack.slice();
stack.length = 0;
}
}, this);
}
},
removeEvent: function (type, callback)
{
var stack = this["@" + type], i;
if (stack && ~(i = stack.indexOf(callback)))
stack.splice(i, 1);
return this;
}
};
element.addEventListener('click', listener, phase || false);
return listener;
}
var listen = new EventListener(document);
listen.addEvent("click", function (event) {
alert(event.target);
});
</script>
Или пример чуть проще, но не менее интересней
<script>
var array = null;
document.addEventListener('click', array = [], false);
array.handleEvent = function(event) {
alert(event.target)
};
</script>
4. Ни слова о MutationEvent (и MutationObserver как замены), AnimationEvent, Microdata API и проблемах реализации.
5. Про ECMAScript 5 вообще все очень скудно, а некоторые части справочника чуть ли не полностью скопированы из 5-го издания, без учета ES 5
6. Много воды, неточностей, упущений и нудятины!