А вы бы нарезали задачу по параграфам каждому Причем перевести каждый программист сам сможет, хотя бы с помощью переводчика. А вот комментарии к переводу, что всё это значит, были бы очень в тему.
Свойство объекта активации. Все переменные (variables) - это свойства, но не все свойства - это переменные. 1) Если "ассоциативный" - это массив, в котором ключи заданы строками, то в этом смысле все объекты в javascript, включая массивы, ассоциативны. 2) Если "ассоциативный" - это массив, где существует строгая ассоциативная связь между ключом (key) и значением (value), ассоциированным с этим ключом, то в этом смысле все объекты в javascript, включая массивы, не ассоциативны. Что бы мы не подразумевали под ассоциативностью, поведение Array object в смысле этой самой ассоциативности (п.1 или п.2 выше) ничем не отличается от поведения Object object, за исключением деталей реализации внутреннего метода [[Put]] с участием свойства length, всё остальное работает в едином ключе, деление на два вида массива не имеет под собой никаких оснований. Тем более странно называть Object object массивом, если создатели языка специально выделили некую структуру отдельно, назвали эту структуру именно массивом, чтобы хотя бы терминами обозначить разницу и не путать людей.
Дело в том, что вы используете термин из спецификации - [[Scope]] и складывается стойкое впечатление о детальном описании механизма. - "Каждое выполнение функции хранит все переменные в специальном объекте с кодовым именем [[scope]]" Не в этом объекте. Не только переменные. - "Каждый вызов var ... - всего лишь создает новое свойство этого объекта" Не этого объекта. - "Такова внутренняя структура "области видимости" - обычный объект" Детали реализации внутренней структуры не раскрыты, но сам механизм предполагает, что речь идёт не об объекте, а о scope chain, о цепочке объектов (Variable objects) или, как говорят в AS - о цепочке областей видимости. - "после того, как функция закончила выполнение, ее область видимости [[scope]], т.е весь набор локальных переменных убивается" Свойство [[Scope]] статично, не надо путать [[Scope]] и scope chain. Первое создаётся и получает значение в момент создания функции и уже не меняется в зависимости от вызова(ов). - "Когда одна функция создается из другой, то для нее создается ссылка на [[scope]] внешней функции" Не создаётся.
arguments - переменная в смысле языков программирования. Эти детали типа "свойство activation object" совершенно не важны. --- В статье я подразумеваю, что массив есть и по ключам строковым (Object) и расширение (Array) с дополнительными возможностями. Object - является ли ассоциативным массивом? Да, является. Но для численных ключей лучше использовать Array. Создатели языка запутали людей терминами и экстра-гибкостью. Когда человек начинает изучать JS и видит что есть только Array - он думает, что ассоциативных массивов в JS нету вообще. Говоря, что в JS есть два типа массивов - для ассоциативного можно использовать Object, для числового - Array, получаем четкий порядок в голове, что зачем использовать.
Гы. Тогда предлагаю пробежаться по всем статьям и везде слово "свойство" (prototype, constructor, length... и т.п) поменять на слово "переменная". Детали ж совершенно не важны. Нет не является (п.2 выше). Да, является (п.1 выше). Строго это не хеш, не словарь, не массив, не что-то-там, это объект javascript, со своими присущими ему особенностями. Если вы пытаетесь обобщить его поведение со структурами из других языков - покажите, в каком месте обобщение и чем это поможет понять объект. Я готов признать объекты (любые) ассоциативными только с точки зрения п.1. Всё остальное надумано. Все ключи всех объектов внутри всегда в виде строк. И массивов тоже. Никакой разницы. Поэтому вы всё это распутываете, добавив нам ещё один массив. Логично. Совершенно правильно думает. Хвалю. Возможно. У каждого своя голова. В ней бывает и неправильный чёткий порядок.
Люди, на сайте форум есть? Перебирались бы туда потихонечку. А то сайт хороший получается, а, обсуждая его здесь, вы тот сайт никогда не раскрутите. Да и здесь статьи ТОГО сайта не очень правильно обсуждать. Хоть и интересно.
Затем, что появился хороший сайт. А этот сайт посвящён PHP. И во-вторых, если все будут обсуждать яваскрипт здесь, то что тогда будет там?
Вниманию пожелавшего помочь в переводе vasa_c и не только Создана страничка и начат перевод спецификации ECMAScript: http://javascript.ru/ecma.
sword dancer: этот блог принадлежит не мне, а tenshi. Тормоза убраны. Документ разбит на страницы по главам. ECMA разрешает переводы без ее согласия.