JS中数值类型已经可以使用Number方法,为什么还要引入Number对象概念

JS中数值类型已经可以使用Number方法,为什么还要引入Number对象概念呢?也就是说:
var n1 = 10;
var n2 = new Number(10)
n1 和 n2的区别在哪里呢,二者都可以:
n1.toString()
n2.toString()
结果都一样。
除了typeof不同。
另外Number.isInteger(n1) 返回true
而Number.isInteger(n2)却返回false,Number.isInteger()不是对象方法吗,怎么反而是false?
拜托高手帮忙解答,多谢了

typeof 不同就已经说明了问题,typeof(n2) 是一个对象Object,它并不代表一个纯数值类型,而Number.isInteger()仅用来确定传递的值是否为整数,

img

对象传递进入参数,那么返回false便是很合理的了。

Number作为一个对象,对象可以提供很多有效的功能,

img


这些并不是数值类型就可以直接使用的特性,通过这种对象类型可以实现更多数值类型无法提供的便捷的方法。
个人所言,希望对您有所帮助!

你还是先去复习什么是对象,什么是类,什么是类型
你现在这些概念整个都混在一起
new Number(10)是实例化一个Number类,并给构造函数传参,值是10
而n1=10是将n1赋值一个Integer类型的常量,值是10
Number是个类,根本就不是个方法

Number是一个对象,在javascript里是原始数值的包装对象。isInteger()这个方法貌似不支持转入对象,这比较鸡肋。

个人理解
n1是一个基本数据类型 数字
n2是一个Number对象 对象
Number本身就是一个函数
所以调用Number.isInteger(这里传入Number对象)所以返回false

var n1 = 10; 是直接申明一个变量,值为10
var n2 = new Number(10) 是申明一个对象,两个不完全一样,Number.isInteger()函数用于检查传递给它的值是否为整数,而不是对象是否为整数

n1是一个基本数据类型的数字
n2是一个Number对象,这两个一个是对象,一个是变量,两个完全不一样。
Number.isInteger() 方法用来判断给定的参数是否为整数,n2是对象,对象不是整数,所以false。

查书后现在搞明白了,关键点在于关键词new, 其为生成类的实例对象,可以获得类的属性和方法,但JS的设计者将数值和数值变量都视为Number对象,可以得到Number()类的属性和方法,在string类型也一样,JS中没有方法的数据类型只有null和undefined。这样的设计给开发带来便利但使初学者产生困惑。感觉new以后的糖越嚼越甜。