Потому что это не метод, а класс (прототип). Также существуют:
String, Boolean, Object, Array
. При вызове классов
Number, String, Boolean
без оператора
new
они постараются привести переданное значение к примитиву (например
String(true) // "true"
. В том случае, если их вызвать с оператором
new
, то они вернут новый объект (не путать с Object), значением в котором будет переданное значение. Лучше так не создавать переменные данных классов, а использовать примитивы (об этом можете почитать в книге
Стоян Стефанов - JavaScript Шаблоны). У
Object
особое поведение при его вызове без
new
- он постарается понять тип переменной и впоследствии вернет экземпляр класса определенного примитива:
Object(100) // Number { 100 }
typeof Object(100) // "object"
typeof 100 // "number"
Object(100) instanceof Number // true
100 instanceof Number // false
Вызов класса
Array
без ключевого слова
new
или с ним:
с 1 аргументом - вернет пустой массив, длиной равной переданному аргументу;
с 2 и более аргументами - вернет массив значений.