Number,Boolean并且String是對應于這些原始型別的建構式。
BigInt是對應于 BigInt 原始型別的函式,但它不是建構式。
new BigInt(1n) // Uncaught TypeError: BigInt is not a constructor
為什么?
uj5u.com熱心網友回復:
新基本型別 ( Symbol, BigInt) 的函式不會獲得構造簽名,因為 TC39 認為它們不需要它們。關于提案的這個問題BigInt,Jordan Harband (TC39 成員和規范的前編輯)說:
就像,與產生原語的事物
Symbol一起使用是沒有意義的。new由于BigInt(likeSymbol) 是一個原語,它只能作為函式呼叫。不幸的是,ES6 之前的原始建構式必須保留它們的
new能力,以便向后兼容。
從這個(也是約旦):
...用戶永遠不應該使用
new物件Number,因為使用盒裝原語被廣泛認為是一種非常糟糕的做法。新的范式(沒有雙關語)是
Symbol遵循的——如果你想要一個物件,你必須明確地將原語傳遞到Object.new Primitive()是一支footgun,新的原語不應該延續這種傳統模式。
new String等的用例很少而且相差甚遠。看起來委員會決定避免與較新的原語發生這種混淆。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/481016.html
標籤:javascript
上一篇:在節點js中獲取匯入陳述句錯誤
