为什么我创建一个需要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)
答案 0 :(得分:0)
这完全取决于Map
功能的实现。您在Chrome中收到此错误,而在夜间通话Map();
会为您返回一张漂亮的全新地图。
请记住,您可以在不使用new
运算符的情况下创建对象这一事实或多或少是无用的(有人可能认为它有助于Object
构造函数,因为它没有' t只返回一个新对象,但是一个类型匹配你传递的参数类型的对象。您可以对任何构造函数执行相同的操作:
function Test() {
if(!(this instanceof Test)) return new Test;
}
Test(); // equivalent to *new Test;*