var a=new Boolean(false);
var b=false;
alert(a instanceof Boolean);
alert(b instanceof Boolean);
第一个弹出true
第二个弹出false
为什么?不是太懂。
阿神2017-07-05 10:58:40
JavaScript 里的值有两种类型:原始类型和引用类型(对象)。
false
是一个 boolean
原始类型的值,不是对象,所以 false instanceof Boolean
是 false
。
同理 "foo" instanceof String
也是 false
。
检查原始类型可以用 typeof
。
你会看到 typeof false
的值是 "boolean"
,注意是小写“b”。
以及:
typeof Boolean
是 "function"
Boolean instanceof Object
是 true
由于 JavaScript 会悄悄做类型转换,很多时候会让使用者疏忽这类型之间的差异。比如 var length = "hello world".length
,就是把原始类型 string
转换成了 String
对象的实例。
女神的闺蜜爱上我2017-07-05 10:58:40
除object外,其他类型都属于基本类型,你这里就是判断是否为Boolean实例,属于object,后面的基本类型就是false了,不是new出来的一个Boolean实例,结果当然也就是false了。