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