Что все-таки возвращает конструктор Number?
Оператор new всегда возвращает объект, то же кстати происходит при передаче контекста в функцию через call или apply
В js все что угодно (кроме undefined или null) может быть обернуто в объект, сделано это для того, что бы примитивы (числа, строки) имели методы из прототипа своих конструкторов
У числа нет свойства Number, а в консоли Вы видите то, что возвращает Number.prototype.toString()
Возвращает специальный объект-обертку, у кототрой метод valueOf() (который вызывается при приведении объекта к числовому виду - в данном случае при сложении) возвращает исходное число.
Интересная особенность, характерная для всех объектов:var a = new Number(1)
var b = new Number(1)
console.log(a == b)//пишет false
A выражение {} + 1
вообще не является выражением сложения объeкта с числом. Нужно писать так:({}) + 1 // => "[object Object]1"