2014-01-16 79 views
0

如何創建一個Map,需要new並且它不是必需的對象?Map vs Object的和諧ES6構造函數類型?

var o = new Object(); 
var m = new Map(); 

var constructorObject = o.constructor; 
var constructorMap = m.constructor; 

var newObject = constructorObject(); 
var newMap = constructorMap(); //splat 

最後一行產生,

TypeError: Constructor Map requires 'new' 
    at Map (native) 

回答

0

這僅僅依賴於Map功能的實現。您在Chrome中遇到此錯誤,而在夜間撥打Map();會爲您返回一個美麗的全新地圖。

請記住,您可以在不使用運算符new的情況下創建對象的事實或多或少是無用的(人們可能會認爲它適用於構造函數Object,因爲它不會簡單地返回一個新對象,但是一個類型與你傳遞的參數類型相匹配的對象)。你可以對任何構造函數都做同樣的事情:

function Test() { 
    if(!(this instanceof Test)) return new Test; 
} 
Test(); // equivalent to *new Test;*