var a=new Boolean(false);
var b=false;
alert(a instanceof Boolean);
alert(b instanceof Boolean);
第一個(gè)彈出true
第二個(gè)彈出false
為什么?不是太懂。
JavaScript 里的值有兩種類型:原始類型和引用類型(對象)。
false
是一個(gè) boolean
原始類型的值,不是對象,所以 false instanceof Boolean
是 false
。
同理 "foo" instanceof String
也是 false
。
檢查原始類型可以用 typeof
。
你會看到 typeof false
的值是 "boolean"
,注意是小寫“b”。
以及:
typeof Boolean
是 "function"
Boolean instanceof Object
是 true
由于 JavaScript 會悄悄做類型轉(zhuǎn)換,很多時(shí)候會讓使用者疏忽這類型之間的差異。比如 var length = "hello world".length
,就是把原始類型 string
轉(zhuǎn)換成了 String
對象的實(shí)例。
instanceof 是用于判斷對象是否為某個(gè)構(gòu)造函數(shù)的實(shí)例
b顯然不是對象
除object外,其他類型都屬于基本類型,你這里就是判斷是否為Boolean實(shí)例,屬于object,后面的基本類型就是false了,不是new出來的一個(gè)Boolean實(shí)例,結(jié)果當(dāng)然也就是false了。