Различные способы именования функций в javascript

Мне трудно понять разницу между этими двумя функциями. Они одинаковы? Похоже, что в первом случае appleOne - это имя объекта, а во втором случае appleTwo - это имя функции. Тем не менее, я прочитал, что функции и объекты одинаковы в Javascript, поэтому я в замешательстве...

var appleOne = new function(color) {
    this.color = color;
}

function appleTwo (color) {
    this.color = color;
}

Ссылка: код от http://www.phpied.com/3-ways-to-define-a-javascript-class/

1 ответ

Разница в том, что объект, связанный с переменной appleTwo является функциональным объектом, с которым объект связан с переменной appleOne это не функция: это "обычный" объект с полем color,

Я бы не сказал, что "функции и объекты одинаковы" в JavaScript. Что правда, так это то, что в JavaScript есть несколько видов объектов:

  • обычные объекты
  • массивы
  • функции
  • регулярные выражения

В первом примере вы использовали анонимную функцию в качестве конструктора, поэтому объект, который вы создали и назначил appleOne это "обычный" объект. Во втором примере для определения функции используется объявление функции.

Если ваш вопрос был не о разнице, а о том, почему первый случай "работает" (потому что это не очень распространенный шаблон), есть несколько вопросов SO, доступных с ответом.

Другие вопросы по тегам