0

当我创建它需要的 Mapnew而 Object 不需要它时,怎么会这样?

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)
4

1 回答 1

0

这仅取决于功能的实现Map。您在 Chrome 中会收到此错误,而在 Nightly 调用中Map();会返回一个漂亮的全新地图。

请记住,您可以在不使用new运算符的情况下创建对象这一事实或多或少是无用的(有人可能会争辩说它为Object构造函数服务,因为它不仅仅是返回一个新对象,而是一个类型匹配的对象您传递的参数类型)。您可以对任何构造函数执行相同的操作:

function Test() {
  if(!(this instanceof Test)) return new Test;
}
Test(); // equivalent to *new Test;*
于 2014-01-17T09:42:42.887 回答