Javascript 用对象包装基元值的结果是什么?

Javascript 用对象包装基元值的结果是什么?,javascript,object,Javascript,Object,所以我在检查我朋友的作业,我看到我朋友使用了.map()到他的数组,它看起来像这样 let numbers = ['1','2','3','4','5'] numbers = numbers.map(Number) // [1,2,3,4,5] [[Number: 1], [Number: 2], [Number: 3], [Number: 4], [Number: 5]] 数组中的所有元素数据类型都变成了数字。 然后我尝试用.map(Object)映射结果,结果如下所示 let numb

所以我在检查我朋友的作业,我看到我朋友使用了.map()到他的数组,它看起来像这样

let numbers = ['1','2','3','4','5']
numbers = numbers.map(Number)

// [1,2,3,4,5]
[[Number: 1], [Number: 2], [Number: 3], [Number: 4], [Number: 5]]
数组中的所有元素数据类型都变成了数字。 然后我尝试用.map(Object)映射结果,结果如下所示

let numbers = ['1','2','3','4','5']
numbers = numbers.map(Number)

// [1,2,3,4,5]
[[Number: 1], [Number: 2], [Number: 3], [Number: 4], [Number: 5]]
当我打印元素的typeof时,它显示它是一个对象。但它被视为数字;我可以对它们使用比较运算符,可以像计算数字一样进行计算

[Number: 5] > [Number: 4] // true
[Number: 5] + [Number: 4] // 9
这是什么

[Number: 1]

这几乎不是你需要自己处理的事情。当您尝试访问原语的属性时,解释器将在内部执行此操作,例如:

const foo = 55;
foo.toFixed();
原语不是对象;仅基元数没有
toFixed
属性。当解释器看到您试图访问原语上的此类属性时,它将首先将原语转换为对象,即具有内部原型
Number.prototype
(而
Number.prototype
就是其中包含
toFixed
方法的,这就是
foo.toFixed
可以工作的原因)

通过显式地将原语转换为对象,您将看到它的
typeof
object
,并且如果以后访问它的属性,解释器将不会自动将它包装到对象中(因为它已经是一个对象)

const num=55;
const objNum=对象(num);
控制台日志(objNum类型);
console.log(
Object.getPrototypeOf(objNum)==Number.prototype

)
这几乎不是你需要自己处理的事情。当你试图访问原语的属性时,解释器将在内部执行此操作,例如:

const foo = 55;
foo.toFixed();
原语不是对象;原语数字本身没有
toFixed
属性。当解释器看到您试图访问原语上的此类属性时,它会首先将原语转换为对象,即具有
Number.prototype
(而
Number.prototype
就是其中包含
toFixed
方法的,这就是
foo.toFixed
可以工作的原因)

通过显式地将原语转换为对象,您将看到它的
typeof
object
,并且如果以后访问它的属性,解释器将不会自动将它包装到对象中(因为它已经是一个对象)

const num=55;
const objNum=对象(num);
控制台日志(objNum类型);
console.log(
Object.getPrototypeOf(objNum)==Number.prototype
);
numbers=numbers.map(对象)
返回字符串数组
numbers=numbers.map(对象)
返回字符串数组