Перейти к основному содержимому

4 записи с тегом "Понимание ECMAScript"

Посмотреть все теги

Понимание спецификации ECMAScript, часть 4

· 6 мин. чтения
[Марья Хёльтта](https://twitter.com/marjakh), зритель спекулятивной спецификации

Все эпизоды

Тем временем в других частях Веба

Джейсон Орендорф из Mozilla опубликовал отличный подробный анализ синтаксических особенностей JS. Несмотря на различия в деталях реализации, все движки JS сталкиваются с одинаковыми проблемами, связанными с этими особенностями.

Понимание спецификации ECMAScript, часть 3

· 11 мин. чтения
[Марья Хёлтта](https://twitter.com/marjakh), наблюдатель за спекулятивными спецификациями

Все эпизоды

В этом эпизоде мы углубимся в определение языка ECMAScript и его синтаксис. Если вы не знакомы с контекстно-свободными грамматиками, сейчас самое время изучить основы, так как спецификация использует контекстно-свободные грамматики для определения языка. Ознакомьтесь с главой о контекстно-свободных грамматиках в "Crafting Interpreters" для доступного введения или со страницей Википедии для более математического определения.

Понимание спецификации ECMAScript, часть 2

· 10 мин. чтения
[Марья Хёльтта](https://twitter.com/marjakh), наблюдатель за спекулятивной спецификацией

Давайте ещё немного попрактикуемся в наших замечательных навыках чтения спецификации. Если вы ещё не посмотрели предыдущий эпизод, сейчас самое время это сделать!

Все эпизоды

Готовы ко второй части?

Весёлый способ узнать спецификацию — начать с функции JavaScript, о которой мы знаем, и узнать, как она описана.

Внимание! Этот эпизод содержит скопированные алгоритмы из спецификации ECMAScript состоянием на февраль 2020 года. Они со временем устареют.

Мы знаем, что свойства ищутся в цепочке прототипов: если объект не имеет свойства, которое мы пытаемся считать, мы поднимаемся по цепочке прототипов, пока не найдем его (или пока не найдем объект, у которого больше нет прототипа).

Например:

const o1 = { foo: 99 };
const o2 = {};
Object.setPrototypeOf(o2, o1);
o2.foo;
// → 99

Где определена проходка по прототипу?

Попробуем найти, где определено такое поведение. Хорошее место для начала — это список внутренних методов объекта.

Есть как [[GetOwnProperty]], так и [[Get]] — нас интересует версия, которая не ограничена только собственными свойствами, поэтому мы выбираем [[Get]].

К сожалению, тип спецификации описателя свойства также имеет поле [[Get]], поэтому при просмотре спецификации для [[Get]] нам нужно тщательно различать два независимых использования.

Понимание спецификации ECMAScript, часть 1

· 8 мин. чтения
[Марья Хёльтта](https://twitter.com/marjakh), наблюдатель за спецификациями

Все эпизоды

В этой статье мы рассмотрим простую функцию в спецификации и попробуем понять её обозначения. Поехали!

Введение

Даже если вы знаете JavaScript, читать его языковую спецификацию, спецификацию языка ECMAScript, или просто спецификацию ECMAScript, может быть довольно сложно. По крайней мере, я так чувствовал, когда впервые начал её читать.