0

必要なマップを作成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)
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 に答える