В отличие от C / C ++, JavaScript является интерпретируемым языком.Это означает, что сам язык не делает никаких предположений о структуре используемой памяти.Теоретически вы могли бы быть интерпретатором JavaScript, если бы вы взяли бумагу и ручку и «выполнили» код вручную.Поэтому на ваш вопрос нельзя ответить однозначно: механизм может представлять значения любым способом, если он ведет себя в соответствии со спецификацией.
В спецификации только сказано, что:
1) Значения в Javascriptмогут иметь различные типы, Объекты - это определенный тип значения.
2) Объекты - это группа пар ключ-значение, тогда как ключи - это строки, а значения - любое значение
3) массивы оченьспециальные объекты, которые также допускают числа в качестве ключей (и помещают их в ближайшее целое число) и получают специальное свойство length
.
Теперь, если бы я написал интерпретатор JS на C, я бы сначалаИз всех попыток каким-то образом представить «JavascriptValue» в виде некоего типа объединения:
union JavaScriptValue {
Number;
String;
Boolean;
Undefined;
Object;
}
Теперь объект можно представить как
unordered_map<JavaScriptValue, JavaScriptValue>