Почему этот конструктор не возвращает строку?

Учитывать:

function Panda() {
   this.weight = 100;
   return [1,2]; 
}

console.log(new Panda());

Когда мы создаем экземпляр с ключевым словом new (new Panda()), он возвращает: [1,2]

Без оператора return возвращается: { weight: 100 }

function Panda() {
   this.weight = 100;
}

console.log(new Panda());

С оператором return, например: return "Hello", он возвращает { weight: 100 }

function Panda() {
   this.weight = 100;
   return "Hello"; 
}

console.log(new Panda());

Почему он это делает? Потому что это должен быть объект?


person André Vinícius    schedule 28.06.2017    source источник
comment
Похоже, что возвращение примитивного типа данных игнорируется, а возвращение объекта или массива - нет.   -  person Chris G    schedule 28.06.2017
comment
Если это конструктор, почему вы пытаетесь что-то вернуть?   -  person xdumaine    schedule 28.06.2017
comment
@ChrisG, возможно, объект можно адаптировать к структуре (классу), но примитивный тип данных просто не имеет индексов, которые могут быть связаны с данными (возможно, я ошибаюсь).   -  person Alejandro Iván    schedule 28.06.2017
comment
Я могу спросить его по-другому, если это конструктор, почему он учитывает возвращаемое значение?   -  person André Vinícius    schedule 28.06.2017
comment
@ChrisG похоже, что вы правы   -  person George    schedule 28.06.2017
comment
Вы можете return Object('Hello'), но, честно говоря, я никогда не знал, что возвращаемые примитивы игнорируются. Очевидно, это применимо как в строгом, так и в нестрогом режиме.   -  person Patrick Roberts    schedule 28.06.2017