js中Number()与new Number()

js中的数据类型包括基础数据类型(number、string、boolean、null、undefined)和复合(引用)数据类型(Object—>包括Array、function、Data等)

其中基础数据类型的 boolean、number、string又称为包装类型。当 Number() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 Number 对象。如果不用 new 运算符,把 Number() 作为一个函数来调用,它将把自己的参数转换成一个原始的数值,并且返回这个值(如果转换失败,则返回 NaN)。

包装类型与原始类型之间的转换方式如下:

  • 原始->包装: new Number(123)
  • 包装->原始: (new Number(123)).valueOf()
    valueOf() 是 Object 的原型方法,它定义在 Object.prototype 对象上,所有 Object 的实例对象都会继承 valueOf() 方法。valueOf() 方法能够返回对象的值。JavaScript 自动类型转换时会默认调用 valueOf() 原型方法。Object 对象默认 valueOf() 方法返回值与 toString() 方法返回值相同,但是部分类型对象重写了 valueOf() 方法。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script>
			let num1 = Number(12)
			let num2 = new Number(12)
			let num3 = 12
			console.log(typeof num1,typeof num2)	//number object
			console.log(num1===num3)	//true
			console.log(num1===num2)	//false
			console.log(typeof num2.valueOf())	//number
		</script>
	</body>
</html>

小知识:
1、Number(1)是指将1转化为number类型,跟1是全等关系。Number(1)是把1转换为数字类型,new Number(1)是把 1 包装成了一个对象。

2、一个原始类型值并没有任何可用的方法,其使用的方法是包装对象原型上的,例如:(12).toFixed(),toFixed()实际上是在Number对象原型(prototype)中声明的方法。

参考:JS valueOf()方法:返回对象的值

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值