Этот ответ на другой вопрос действительно помог мне расширить мое понимание того, как работают объекты JavaScript:
Псевдоним функции JavaScript не работает
Что касается вашего фрагмента кода, давайте разберем его. Начните с рассмотрения структуры высокого уровня: var foo = ( exrpession );
. Вы также можете легко сказать: var foo = expression;
, но IIRC скобки необходимы для обработки специфической особенности IE.
Теперь, в этом случае выражение является анонимной функцией. Javascript прекрасно подходит для определения функции без имени. Только не ожидайте, что позвоните, пока не сохраните ссылку где-нибудь. Вы также можете вызвать анонимную функцию сразу после объявления, например:
function() {
alert('test');
return 42;
}();
Это должно выглядеть подозрительно похоже на базовую структуру, используемую для выражения из вашего фрагмента кода. Надеюсь, вы легко можете увидеть, что 42
из моего образца может быть так же легко объектом.
Таким образом, остается вопрос: зачем вам это делать? Помните, что в javascript функции также являются объектами. Будучи хорошим учеником ООП, вы, вероятно, хотели бы сделать некоторые объекты ваших объектов приватными. Тем не менее, javascript не имеет ничего встроенного для поддержки этого. К счастью, бывает, что если вы вернете объект из этой внутренней функции, у него будет доступ к другим переменным, определенным в этой функции, но внешний код не будет иметь никакого доступа к ним. Таким образом, вы, по сути, создали объект с закрытыми членами.