Я новичок в JavaScript, и у меня есть следующие сомнения: я провожу эксперимент с концепцией встроенного конструктора функций.
Итак, я пытаюсь создать новый объект Number, используя оператор new.
Если я открою Инструменты разработчика Chrome и в Консоли выполню это действие:
var a = new Number(3);
undefined
a;
Number {[[PrimitiveValue]]: 3}
как видите, сначала я создаю новый объект Number с помощью оператора new, а затем запускаю этот объект и получаю его значение: Number {[[PrimitiveValue] ]: 3
Проблема в том, что если я делаю то же самое в FireBug внутри FireFox, я получаю что-то другое, я получаю это:
var a = new Number(3);
undefined
a;
Number {}
Итак, используя FireFox, делая то же самое, создается впечатление, что создается объект Число, но этот объект пуст и не содержит 3. > как в Chrome.
Почему? Как это возможно? Что мне не хватает?
Еще одно сомнение связано с тем, как именно работает предыдущее создание объекта, когда я выполняю:
var a = new Number(3);
Хорошо, я использую концепцию конструкции функции, связанную с оператором new. Из того, что я знаю (но поправьте меня, если я делаю неправильное утверждение), когда я выполняю функцию с использованием оператора new, происходит следующее:
Создается новый пустой объект. Таким образом, в этом случае создается новый объект Number, который должен означать объект JavaScript, в котором переменная proto установлена на ссылку Number. объект, поэтому этот объект будет иметь доступ ко всем методам, определенным для Number (в соответствии с прототипом концепции наследования, реализованной в JavaScript).
Переменная this, помещенная в контекст выполнения этой функции, устанавливается на ссылку на новый созданный объект.
Параметр используется для установки свойства объекта. Таким образом, в этом случае значение будет 3.
Почему, когда я делаю:
var a = new Number(3);
Я получаю значение undefined? Это может быть связано с тем, что эта функция Number не возвращает никакого значения?
Правильно ли я рассуждаю или я что-то упускаю?
var a = 3;
и все готово. - person Robusto   schedule 31.12.2015