JavaScript中的布尔对象是?

时间:2012-08-15 23:13:04

标签: javascript boolean

JavaScript中的布尔对象是什么? JavaScript中的“一切都是对象”是真的吗?

2 个答案:

答案 0 :(得分:8)

Primitives不是对象,其他所有内容(any standard object)都是对象。但是,大多数原语(除了undefinednull之外)都有一个对象。

所以

var a = false;

不是对象,而是

var b = new Boolean(false);

由于两个对象只引用同一个对象,因此它们是相同的,因此最好使用对象版本的基元:

a === false; // is true
b === false // is false   <- this is a problem

或者特别是对于布尔对象,将它们与任何布尔运算符一起使用会产生意外结果。对象引用始终评估为true,因此使用b的结果将是:

// remember
// a is the primitive value false
// b is a boolean object with value false

// NOT
!a // true
// but
!b // false

// AND
a && true // false
// but
b && true // true

无论如何都没有使用这些对象版本的真正优势,因为当您尝试在它们上调用方法时,JavaScript是autoboxing原语。这就是为什么叫:

var s = "HI THERE!".toLowerCase();
s = s.substring(0,2);

是可能的。

答案 1 :(得分:1)

布尔值,数字和字符串是类似对象的类型 - 它们有方法,但它们是不可变的。