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