私はその引数と同じオブジェクトを返すユーティリティ関数を書こうとしました。クラス名 `Map`をハードコーディングせずにマップを作成することはできますか?
function createInstanceOfSameClass(arg) {
return Object.create(Object.getPrototypeOf(arg));
}
const m1 = new Map();
const m2 = createInstanceOfSameClass(m1);
m2.set(1, "x"); // Uncaught TypeError: Method Map.prototype.set called on incompatible receiver #<Map>
The jsfiddle is here:機能は、地図などES6コレクション型を除き、ほとんどのクラスのために正常に動作します。
'evalの(「VAR OBJ =新しいです"+ className);' –
@RyanMcCullaghいいえ。すべてのクラスに名前(アクセス可能)があるわけではなく、スコープ内にないか、一意ではないかもしれません。 – Bergi