Показать сообщение отдельно
  #2 (permalink)  
Старый 06.11.2009, 18:21
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Цитата:
объекты, с возможностью интроспекции и динамического изменения типа через механизм прототипов;
Интроспекция есть, но тип объекта не меняется динамически за счёт изменения прототипа. Более того, прототип объекта не может быть изменён (полностью на новый объект) после создания объекта. Исключение составляют некоторые реализации - типа __proto__ в Gecko.

Цитата:
Нулевой и неопределённый типы данных Дэвидом Флэнаганом неформально причисляются к тривиальным типам, поскольку каждый из них определяет только одно значение.
Это, действительно, отсебятина Флэнагана, и к ES не имеет отношения. В ES null и undefined - это значения примитивных типов.

Объявление переменных

Цитата:
Синтаксис языка допускает явное и неявное объявление переменных. Явным образом переменную можно объявить с помощью ключевого слова var. В таком случае, переменная будет помещена в область видимости, соответствующую функции, в которой она объявляется. Ещё переменные, объявленные с помощью ключевого слова var называют долговременными, поскольку их нельзя удалить с помощью оператора delete[19]. В том случае если переменная объявляется вне функций, она становится глобальной[19]. Синтаксис языка допускает использование переменной без её предварительного объявления. В таком случае речь идёт о неявном объявлении переменной. Кроме того, формальные аргументы функций также могут быть использованы в качестве локальных переменных
Переменные объявляются исключительно с ключевым словом var. Без var - создаётся лишь свойство глобального объекта, но не переменная. Как было правильно замечено, переменные нельзя удалить. Но опять же, терминология "долговременные" - это отсебятина Флэнагана. Правильная терминология: переменные получают внутреннее свойство {DontDelete} и, соответвественно, не могут быть удалены посредством оператора delete.

Более того, в контексте eval-а, var-ы, всё-таки, могут быть удалены, поскольку, в этом контексте им не выставляется {DontDelete}.

Цитата:
. (обращение к свойству),[] (индексация массива)
И точка, и скобки - это выражение доступа к свойству.

Цитата:
заданием функции с помощью инструкции
На протяжении всего оприсания функций, вы говорите о функции-выражении (Function Expression). Функции-инструкции (Function Statement) - это расширение Gecko для описания функций внутри блоков.

Цитата:
Если она при этом вызывается в функции, в которую передаётся, то её называют функцией обратного вызова (или callback-функцией)
С точки зрения функционального программирования, более общее название - это функциональный аргумент ("Фунарг", "Funarg"). Callback тогда может рассматриваться, как частный случай.

Цитата:
При этом определённые в участке программы функции становятся вложенными по отношению к добавленной анонимной функции и в них возможно осуществление доступа к локальным переменным анонимной функции (которые до её введения были глобальными). Однако извне анонимной функции доступ к ним осуществить нельзя.
Только, если она не сохранена (возвращена) и, соответственно, её [[Scope]] вместе с ней.

Цитата:
Каждый объект в языке имеет следующие свойства:

constructor Функция, использованная для создания объекта (в примерах выше это Object())
Автоматом, только функции получают свойство constructor, и то, оно потом может быть удалено.

Цитата:
конструктор
функция, использующая ключевое слово this для формирования полей и методов объекта, создаваемого ей с помощью оператора new,
Не совсем удачное определение. Наличие this внутри функции никак не обособляет её от других функций. Можно использовать this для навешивания свойств другому объекту, например. С другой (и правильной) стороны, все функции - конструкторы. Сама же функция, участвующая в купе с new является больше инициализатором (это моя локальная терминология, в Википедии её писать не надо), поскольку за создание объекта отвечает не сама функция, а внутренний метод [[Construct]].

Про DOM почитал поверхностно.

Цитата:
В статье «javascript: The World's Most Misunderstood Programming Language»[94][95] Дуглас Крокфорд пишет::

Практически, любая книга по JavaScript — это воплощение Зла. В них куча ошибок, бестолковых примеров и плохих советов. Важные особенности языка либо плохо рассмотрены, либо не затрагиваются вовсе. Я прошёлся через десятки книг по JavaScript и могу рекомендовать только одну из них: javascript: The Definitive Guide (5th Edition) by David Flanagan. Уважаемые авторы: Если вы написали хорошую книгу, пожалуйста, вышлете мне копию для ознакомления
http://javascript.ru/ecmascript-in-detail (возможно, будет перевод на английский).
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 06.11.2009 в 20:57.
Ответить с цитированием