new Number() and new Boolean()

0 || 1
>> 1 // JavaScript では 0 も false のようにあつかわれると、思っていたんだけど
Number(0) || 1
>> 1 // これは普通だ
new Number(0) || 1
>> 0


false || 1
>> 1
Boolean(false) || 1
>> 1
new Boolean(false) || 1
>> false


typeof 関数で object がかえるものはすべて true なのか。
これではまる人はあんまりいないか。