049_Number对象

1. Number对象

1.1. Number是对原始数字的包装对象。

1.2. 创建Number对象的语法:

var myNum = new Number(value);

1.3. 参数value是要创建的Number对象的数字。

1.4. 当Number()和运算符new一起作为构造函数使用时, 它返回一个新创建的Number对象。

2. Number对象属性

3. Number对象方法

4. 使用字面量创建数和Number对象创建数

4.1. 使用字面量创建数字和Number对象创建数字

var num1 = new Number(10); //  使用Number对象创建数字
var num2 = 10; //  使用字面量创建数字

4.2. 使用字面量创建数和Number对象创建数的不同

4.2.1. 使用字面量创建数字是原始值, 储存在栈中。

4.2.2. 使用Number对象创建数字是对象(引用类型), 储存在堆中。

4.2.3. 使用字面量创建数字和Number对象创建数字的内存结构:

4.2.4. 使用Number对象创建数比使用字面量创建数复杂的多(就是因为Number对象多执行了一个Number()构造函数), 执行效率低, 因此我们通常使用字面量创建数

4.2.5. 使用==运算符判断使用字面量和Number对象创建的相同值的数字是否相等时, 结果是true, 因为数值相同。

4.2.6. 使用===运算符判断使用字面量和Number对象创建的相同值的数字是否相等时, 结果是false, 因为虽然数值相同, 但类型不同, 一个是数字, 一个是对象。

5. 数字原始值可以使用Number对象的属性和方法

5.1. 数字原始值, 比如10, 无法拥有属性和方法, 因为它们不是对象。

5.2. 但是通过JavaScript, Number对象的属性和方法也可用于原始数字, 因为在执行属性和方法时 JavaScript将原始数字视为伪对象。

6. Number构造函数还有5个用作数字常量的占位符。这5个常量分别是MAX_VALUE(最大数)、MIN_VALUE(最小数)、POSITIVE_INFINITY(正无穷大)、NEGATIVE_INFINITY(负无穷大)和特殊的NaN(not a number)值。注意, 这些值是构造函数Number()自身的属性, 而不是单独的某个Number对象的属性。

var num1 = new Number(10);
var num2 = 10;

// 正确使用
document.write('Number.MAX_VALUE = ' + Number.MAX_VALUE + '<br />');
document.write('Number.MIN_VALUE = ' + Number.MIN_VALUE + '<br />');
document.write('Number.NaN = ' + Number.NaN + '<br />');
document.write('Number.NEGATIVE_INFINITY = ' + Number.NEGATIVE_INFINITY + '<br />');
document.write('Number.POSITIVE_INFINITY = ' + Number.POSITIVE_INFINITY + '<br />');

// 错误使用
document.write('num1.MAX_VALUE = ' + num1.MAX_VALUE + '<br />');
document.write('num1.MIN_VALUE = ' + num1.MIN_VALUE + '<br />');
document.write('num1.NaN = ' + num1.NaN + '<br />');
document.write('num1.NEGATIVE_INFINITY = ' + num1.NEGATIVE_INFINITY + '<br />');
document.write('num1.POSITIVE_INFINITY = ' + num1.POSITIVE_INFINITY + '<br />');

document.write('num2.MAX_VALUE = ' + num2.MAX_VALUE + '<br />');
document.write('num2.MIN_VALUE = ' + num2.MIN_VALUE + '<br />');
document.write('num2.NaN = ' + num2.NaN + '<br />');
document.write('num2.NEGATIVE_INFINITY = ' + num2.NEGATIVE_INFINITY + '<br />');
document.write('num2.POSITIVE_INFINITY = ' + num2.POSITIVE_INFINITY + '<br />');

7. Number对象重写了Object对象的constructor: ƒ Number()属性, 和toLocaleString()、toString()、valueOf()这三个方法。

8. toLocaleString()方法

8.1. toLocaleString()方法可把一个Number对象转换为本地格式的字符串。

8.2. 语法

numberObject.toLocaleString()

8.3. 返回数字的字符串表示, 由实现决定, 根据本地规范进行格式化, 可能影响到小数点或千分位分隔符采用的标点符号。

9. valueOf()方法

9.1. valueOf()方法返回Number对象的原始值。

9.2. 语法

numberObject.valueOf()

10. 例子

10.1. 代码

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="utf-8" />
		<title>Number对象</title>
	</head>
	<body>
		<script type="text/javascript">
			var num1 = new Number(3.1415926);
			var num2 = 3.1415926;

			document.write('num1 = ' + num1 + '<br />');
			document.write('num2 = ' + num2 + '<br />');
			document.write('(num1 == num2) = ' + (num1 == num2) + '<br />');
			document.write('(num1 === num2) = ' + (num1 === num2) + '<br />');
			document.write('(num1.valueOf() === num2) = ' + (num1.valueOf() === num2) + '<br />');
			document.write('(typeof num1) = ' + (typeof num1) + ', (typeof num1.valueOf()) = ' + (typeof num1.valueOf()) + '<br />');
			document.write('(typeof num2) = ' + (typeof num2) + ', (typeof num2.valueOf()) = ' + (typeof num2.valueOf()) + '<hr />');

			document.write('(num1.toString() === num2.toString()) = ' + (num1.toString() === num2.toString()) + '<br />');
			document.write('(typeof num1) = ' + (typeof num1) + ', (typeof num1.toString()) = ' + (typeof num1.toString()) + ', (num1.toString()) = ' + num1.toString() + '<br />');
			document.write('(typeof num2) = ' + (typeof num2) + ', (typeof num2.toString()) = ' + (typeof num2.toString()) + ', (num2.toString()) = ' + num2.toString()  + '<br />');
			document.write('(num1.toLocaleString() === num2.toLocaleString()) = ' + (num1.toLocaleString() === num2.toLocaleString()) + '<br />');
			document.write('(typeof num1) = ' + (typeof num1) + ', (typeof num1.toLocaleString()) = ' + (typeof num1.toLocaleString()) + ', (num1.toLocaleString()) = ' + num1.toLocaleString() + '<br />');
			document.write('(typeof num2) = ' + (typeof num2) + ', (typeof num2.toLocaleString()) = ' + (typeof num2.toLocaleString()) + ', (num2.toLocaleString()) = ' + num2.toLocaleString()  + '<hr />');

			document.write('Number.MAX_VALUE = ' + Number.MAX_VALUE + '<br />');
			document.write('Number.MIN_VALUE = ' + Number.MIN_VALUE + '<br />');
			document.write('Number.NaN = ' + Number.NaN + '<br />');
			document.write('Number.NEGATIVE_INFINITY = ' + Number.NEGATIVE_INFINITY + '<br />');
			document.write('Number.POSITIVE_INFINITY = ' + Number.POSITIVE_INFINITY + '<br />');
		</script>
	</body>
</html>

10.2. 效果图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值