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

原创 JavaScript Boolean 对象详解

2379 次浏览 读完需要≈ 12 分钟

内容目录

JavaScript中的Boolean对象,是布尔值(truefalse)的对象表示。

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

语法

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

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

new Boolean( [ value ] )

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

Boolean( [ value ] )

参数

参数 描述
value 可选/任意类型表示布尔值的任意值,默认为false

如果参数value被省略或者为falseundefined0、等于0的浮点数(0.0等)、nullNaN、空字符串(""),则将其被视作false

其他任意值均被视作true

返回值

Boolean()的返回值为Boolean类型

1、如果Boolean()函数被当做构造函数来使用,则返回以new关键字构造的一个新的Boolean对象。

2、如果Boolean()函数被当作普通函数使用,则返回转换后的原始布尔值(truefalse)。

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

布尔值在参与数学计算或被转换为数值时,true被转换为 1,false被转换为 0。

示例&说明

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

//构造新的Boolean对象
var bObj1 = new Boolean( ); // false
var bObj2 = new Boolean( false ); // false
var bObj3 = new Boolean( 0 ); // false
var bObj4 = new Boolean( null ); // false
var bObj5 = new Boolean( undefined ); // false
var bObj6 = new Boolean( NaN ); // false
var bObj7 = new Boolean( "" ); // false
var bObj8 = new Boolean( 0.0 /* 或其它所有等于0的浮点数 */ ); // false

// 除了以上值被视作false外,其他任意值均被视作true
var bObj9 = new Boolean( Infinity ); // true
var bObj10 = new Boolean( Number.NEGATIVE_INFINITY ); // true
var bObj11 = new Boolean( "0" ); // true
var bObj12 = new Boolean( "null" ); // true
var bObj13 = new Boolean( [ ] ); // true
var bObj14 = new Boolean( { } ); // true


// 将参数值转换为Boolean数据类型(是布尔值true或false,不是Boolean对象) 
var b1 = Boolean( ); // false
var b2 = Boolean( 0 ); // false
var b3 = Boolean( new Object() ); // true
var b4 = Boolean( "CodePlayer" ); // true

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

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

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

var b1 = Boolean( -5 );
document.writeln( typeof b1 ); // boolean

var b2 = Boolean( 5 );
document.writeln( typeof b2 ); // boolean

// Boolean对象和Boolean数据类型的值相等,但类型不相等
document.writeln( b1 === b2 ); // true (全等)
document.writeln( b1 == bObj ); // true (值相等)
document.writeln( b1 === bObj ); // false (不全等:值相等、类型不相等)

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

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

var bObj = new Boolean( true );
var b = true; // 大多数时候直接以字面值形式定义即可

// Boolean数据类型也可以直接调用Boolean对象的属性和方法
document.writeln( bObj.constructor === Boolean ); // true
document.writeln( bObj.constructor === b.constructor ); // true
document.writeln( bObj.toString( ) ); // true
document.writeln( b.toString( ) ); // true

// 字面值形式的Boolean数据类型也可以直接调用Boolean对象的属性和方法
document.writeln( true.toString( ) ); // true

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

var bObj = new Boolean( true );
var b = true; // 大多数时候直接以字面值形式定义即可

//添加自定义属性
bObj.customProperty = "Boolean对象";
b.customProperty = "Boolean数据类型";

// 修改内置的方法
bObj.toString = function ( ){
	return "修改Boolean对象的toString()方法";
};

b.toString = function ( ){
	return "修改Boolean数据类型的toString()方法";
};

document.writeln( bObj.customProperty ); // Boolean对象
// 添加的属性未生效
document.writeln( b.customProperty ); // undefined

document.writeln( bObj.toString( ) ); // 修改Boolean对象的toString()方法
// 修改的方法也未生效,使用其内置的方法
document.writeln( b.toString( ) ); // true
  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论

打开导航菜单