前言
之前遇到一個(gè)new Number(1)數(shù)據(jù)類型判斷問題,這里做一下整理梳理。
實(shí)例
let num1 = 1;
let num2 = Number(1);
let num3 = new Number(1)
num1 == num2 //true
num1 === num2 //true
num1 == num3 //true
num1 === num3 //false
typeof num1 //"number"
typeof num2 //"number"
typeof num3 //"object"
num1 instanceof Number // false
num2 instanceof Number // false
num3 instanceof Number // true
Object.prototype.toString.call(num1) //"[object Number]"
Object.prototype.toString.call(num2) //"[object Number]"
Object.prototype.toString.call(num3) //"[object Number]"
緣由
-
Number(1)會(huì)轉(zhuǎn)換參數(shù)為數(shù)字類型,如果參數(shù)無法轉(zhuǎn)換成數(shù)字,就返回NaN。 -
new Number(1)先轉(zhuǎn)換數(shù)據(jù)類型,再封裝為數(shù)字對(duì)象。
延伸
1.new Number()、new String()與new Boolean()
- 這三種
基礎(chǔ)數(shù)據(jù)類型的構(gòu)造函數(shù)通過new關(guān)鍵字會(huì)返回一個(gè)經(jīng)過封裝的對(duì)象。
demo.png
2.注意
其他基礎(chǔ)數(shù)據(jù)類型:null,undefined,symbol
-
nullundefined沒有Null()與Undefined()方法 -
symbol有Symbol()方法,但作為構(gòu)造函數(shù)來說并不完整,它不支持語法:"new Symbol()"。
