Подтвердить что ты не робот

Javascript "новый" с функцией, возвращающей самоопределяемый объект

Предположим, что у меня есть следующая функция:

var A = function() {
   var label = "hello";
   return {
      getLabel: function() { return label; }
   }
};

Есть ли разница между:

var a = A();

и

var a = new A();

?

NB: я не спрашиваю здесь что такое "новое" ключевое слово в JavaScript, но как он ведет себя в этом конкретном примере.

4b9b3361

Ответ 1

В вашем конкретном случае нет, нет никакой разницы.

В любом случае, ваша функция вернет самоопределенный объект. Вызывая функцию с ключевым словом new, ECMAscript автоматически создаст для вас новый объект (наряду с магией с свойствами prototype и constructor), к которой вы можете получить доступ/записать через this в пределах function (-constructor).

Опять же, ваш вызов return { } в этой функции всегда будет возвращать именно эту ссылку на объект.