【问题标题】:Harmony ES6 constructor types for Map vs Object?Map vs Object的Harmony ES6构造函数类型?
【发布时间】:2014-02-05 23:19:18
【问题描述】:

为什么当我创建地图时它需要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)

【问题讨论】:

    标签: dictionary v8 ecmascript-harmony


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 2015-12-01
      • 2019-06-07
      • 2019-08-09
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多