Map和Object的Harmony ES6构造函数类型?

时间:2014-01-16 20:26:39

标签: dictionary v8 ecmascript-harmony

为什么我创建一个需要new的地图并且对象上不需要它?

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)

1 个答案:

答案 0 :(得分:0)

这完全取决于Map功能的实现。您在Chrome中收到此错误,而在夜间通话Map();会为您返回一张漂亮的全新地图。

请记住,您可以在不使用new运算符的情况下创建对象这一事实或多或少是无用的(有人可能认为它有助于Object构造函数,因为它没有' t只返回一个新对象,但是一个类型匹配你传递的参数类型的对象。您可以对任何构造函数执行相同的操作:

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