您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2014年08月29日 02:57

原创 JavaScript Number 对象详解

19 次浏览 读完需要≈ 10 分钟

内容目录

JavaScript中的Number对象,是原始数值的对象表示。

所有主流浏览器均支持Number对象。更多细节信息请参考JavaScript Number对象的属性和方法

语法

Number对象(或称之为Number()函数),其语法有以下两种:

1、充当Number对象的构造函数使用,用于结合new关键字构造一个表示数值的Number对象。

new Number( [ value ] )

2、当作普通函数使用,将其它数据类型转换为Number数据类型的原始数值。简而言之,这是一个类型转换函数。

Number( [ value ] )

参数

参数 描述
value 可选/任意类型表示数字的任意值,默认为 0。

如果参数value无法正常转换为数字,则返回NaN

返回值

1、如果Number()函数被当做Number对象的构造函数来使用,则以new关键字构造一个新的Number对象(Number类型)。该Number对象表示参数所指定的数值。

2、如果Number()函数被当作普通函数使用,则返回转换后的Number数据类型的数值。

注意:大多数时候,你无需显示地通过new关键字来构造一个Number对象,因为在JavaScript中,Number对象Number数据类型是相通的,你可以在Number数据类型的变量上直接使用Number对象的所有属性和方法(相关示例见下面)。

示例&说明

以下是Number()函数的几种常见用法示例:

// 构造新的Number对象
var numObj1 = new Number( 5 ); // 5
var numObj2 = new Number( "5.3" ); // 5.3
var numObj3 = new Number( ); // 0
var numObj4 = new Number( "CodePlayer" ); // NaN


// 将数据转换为Number数据类型(是原始数值,不是Number对象)
var num1 = Number( 5 ); // 5
var num2 = Number( "5.3" ); // 5.3
var num3 = Number( ); // 0
var num4 = Number( "CodePlayer" ); // NaN

值得注意的是,Number对象的数据类型为Object,我们可以通过typeof运算符进行查看,其结果是"object"。

var numObj = new Number( 5 );
document.writeln( typeof numObj ); // object 【在js中,绝大多数类型的对象使用typeof运算符,其结果都是"object"】

var num1 = 5;
document.writeln( typeof num1 ); // number

var num2 = Number( 5 );
document.writeln( typeof num2 ); // number

// Number对象和Number数据类型的值相等,但类型不相等
document.writeln( num1 === num2 ); // true (全等)
document.writeln( num1 == numObj ); // true (值相等)
document.writeln( num1 === numObj ); // false (不全等:值相等、类型不相等)

// 只有对Number对象使用instanceof运算符,其结果才返回true
document.writeln( numObj instanceof Number ); // true
document.writeln( num1 instanceof Number ); // false

运行代码(其他代码请自行复制到演示页面运行)

在JS中,Number数据类型Number对象是相通的,因此Number数据类型可以直接使用Number对象的属性和方法。因此,大多数情况下,你无需显示地通过new关键字来创建一个新的Number对象。

var numObj = new Number( 18 );
var num = 18; // 大多数时候直接以字面值形式定义即可

// Number数据类型也可以直接调用Number对象的属性和方法
document.writeln( numObj.constructor === Number ); // true
document.writeln( numObj.constructor === num.constructor ); // true
document.writeln( numObj.toFixed( 2 ) ); // 18.00
document.writeln( num.toFixed( 2 ) ); // 18.00

// 字面值形式的Number数据类型也可以直接调用Number对象的属性和方法
document.writeln( 13.5451.toFixed( 2 ) ); // 13.55

虽然Number数据类型可以使用Number对象的所有属性和方法,但是你不能为Number数据类型的值添加自定义的属性或方法,也不能修改其内置的属性和方法(如果你这样做了,虽然不会报错,但是添加和修改操作并不会生效)。

var numObj = new Number( 3.1415 );
var num = 3.1415;

// 添加自定义属性
numObj.myX = 18;
num.myX = 18;

// 修改内置的方法
numObj.toFixed = function ( n ){
	return "修改Number对象的toFixed()方法";
};

num.toFixed = function ( n ){
	return "修改Number数据类型的toFixed()方法";
};

document.writeln( numObj.myX ); // 18
// 添加的属性未生效
document.writeln( num.myX ); // undefined

document.writeln( numObj.toFixed( 2 ) ); // 修改Number对象的toFixed()方法
// 修改的方法也未生效,使用其内置的方法
document.writeln( num.toFixed( 2 ) ); // 3.14
  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论

打开导航菜单