Различные способы именования функций в 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, доступных с ответом.