Boolean对象和基本类型Boolean区别

var a=new Boolean(false);
var b=false;
alert(a instanceof Boolean);
alert(b instanceof Boolean);
第一个弹出true
第二个弹出false
为什么?不是太懂。

阅读 4.7k
4 个回答

JavaScript 里的值有两种类型:原始类型和引用类型(对象)。

false 是一个 boolean 原始类型的值,不是对象,所以 false instanceof Booleanfalse

同理 "foo" instanceof String 也是 false

检查原始类型可以用 typeof

你会看到 typeof false 的值是 "boolean",注意是小写“b”。

以及:

typeof Boolean"function"
Boolean instanceof Objecttrue

由于 JavaScript 会悄悄做类型转换,很多时候会让使用者疏忽这类型之间的差异。比如 var length = "hello world".length,就是把原始类型 string 转换成了 String 对象的实例。

var a = new Boolean(false);
var b = false;
alert(typeof a); // 'Object'
alert(typeof b); // 'Boolean'
alert(a === b); // false

instanceof 是用于判断对象是否为某个构造函数的实例
b显然不是对象

除object外,其他类型都属于基本类型,你这里就是判断是否为Boolean实例,属于object,后面的基本类型就是false了,不是new出来的一个Boolean实例,结果当然也就是false了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题