Цитирование из Работа с объектами - MDN Docs
section Использование инициализаторов объектов последний абзац:
"В JavaScript 1.1 и более ранних версиях вы не можете использовать инициализаторы объектов. Вы можете создавать объекты только с использованием их функций конструктора или с помощью функции, предоставленной другим объектом для этой цели. См. Использование функции конструктора . «
означало, что все объекты БЫЛИ функционируют! В частности, при оценке, экземплярах или экземплярах функций.
Буквально, ВСЕ объекты этого винтажа были созданы синтаксически с такими конструкциями, как:
"newobj = new constructFunctor(arg1,arg2){this.prop1=arg1 /* etc */}(val1,val2)"
И в строке, которая делает объект "newobj
", есть слово "constructFunctor
", имя функции. Заявление намеренно процитировано, чтобы продемонстрировать тот факт, что оно должно быть выполнено eval()
. До выполнения «newobj
» «приравнивается» к функции, потому что оператор ДОЛЖЕН иметь единицу и «равен» единице в силу буквального существования «constructFunctor
», чтобы определять значение newobj
при выполнении. Цитирование, а не, очень преднамеренное для разъяснения этой абстракции. Однако, поскольку JavaScript имеет функцию eval
, эта абстракция фактически намеренно включена в язык JavaScript.
Наследие этого по-прежнему является фундаментальным для JavaScript, хотя некоторые синтаксические сокращения были добавлены как «инициализаторы объектов» с использованием сокращенной записи, такой как: «no={}
». Тот факт, что приведенный выше абзац все еще присутствует в текущей документации, имеет значение по указанным причинам.
Кроме того, JavaScript также иллюстрирует фундаментальные парадигмы функционального программирования. Это определяет все как функцию, используя абстракции теории рекурсивных функций и лямбда-исчисления! Например, 0 (), 1 (), 2 (), ... - постоянные ненарные функции, более известные как 0,1,2,3, ...
JavaScript полностью соответствует подходу функционального стиля программирования, а не общему OOPS (каламбур объектно-ориентированного стиля программирования).