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了。