Процесс называется бокс / распаковка.
Это означает, что всякий раз, когда интерпретатор / компилятор видит примитивный тип, используемый в качестве объекта, он будет использовать
new Object([primitive])
, чтобы получить действительный экземпляр. И точно так же, как только вы попытаетесь использовать его как примитив (как в выражении), он будет использовать
[boxedobject].valueOf()
чтобы получить примитив.
В ECMAScript (javascript) конструктор Object может упаковывать все примитивы.