Если функция возвращает объект, она не может выступать в качестве функции конструктора в JS.Верно ли мое предположение - PullRequest
0 голосов
/ 09 июня 2019

Следующий код демонстрирует то же самое.

function test(x) {
  this.x = x;
  return {};
}

function test1(x) {
  this.x = x;
}

console.log(new test(1).x); // logs undefined 

console.log(new test1(1).x); // logs 1

Правильно ли мое предположение?

1 Ответ

2 голосов
/ 09 июня 2019

Возвращает this, если функция не возвращает свой собственный объект. новый оператор

В первой функции вы возвращаете {}, поэтому при доступе к

new test(x).x

Вы на самом деле получаете доступ к {}.x, который undefined

тогда как во второй функции

new test(x).x фактически обращается к свойству x, добавленному в функцию test

...