Exploring JS、Object.assignテキストでJSを探索する際の正誤情報?あなたはクローンはオリジナルと同じプロトタイプを持つようにしたい場合は
、あなたはObject.getPrototypeOf()とObject.createを(使用することができます):しかし真実ではないように思わ
function clone(orig) { const origProto = Object.getPrototypeOf(orig); return Object.assign(Object.create(origProto), orig); }
、
var a = {a:1};
var o1 = Object.create(a);
Object.getPrototypeOf(o1); //shows {a:1} of course
var o2 = Object.assign(o1);
Object.getPrototypeOf(o2); // also shows {a:1}
は、なぜ彼らは同じ」と言うん元の "クローンのプロトタイプ? Object.assign
は既に元のプロトタイプと同じプロトタイプを持っていて、clone()
のプロトタイプからすべての列挙可能なメソッドをコピーしてプロトタイプへのリンクを完全に失っているようです。
...彼らは試作品を除いて同じであることを確認しますメソッドは、ターゲットを変更します。最初に、source_1のすべての列挙可能な(継承されていない)プロパティをその中にコピーし、次にsource_2のすべてのプロパティをコピーします。最後に、ターゲットを返します。 'Object.assign'はそれに渡された最初の引数を返します。つまり、アプリケーションは実際にオブジェクトをクローンしません。 –
あなたのコードは 'clone'がまったく何をしないのかをしません。プロトタイプで 'Object.create'を使用しておらず、クローンを作成するオブジェクトで' Object.getPrototypeOf'を使用していないので、2つのパラメータで 'Object.assign'を使用しません。これらはすべて重要な部分です。 – Bergi