JavaScriptを使って、特にクラスやその他のものでオブジェクト指向プログラミングをシミュレートしていました。継承のプロトタイプをコピーしますか?
私は相続
MyClass.prototype = new AnotherClass();
を達成するためのこの方法を知っていたしかし、私は満足していなかった、私はAnotherClass
のコンストラクタを呼び出すために必要な方法が好きではありませんでした。だから私は遊んでいて、仕事をしていて基本的に第二の意見を求めているようなものを思いつきました。我々はそれの新しいコピーを取得し、継承されたプロパティを変更すると、親のプロトタイプの特性に影響を及ぼさないようにMyClass
のプロトタイプにそれを割り当てるプロトタイプをクローニングすることにより、
function clone (obj)
{
function CloneFactory() {}
CloneFactory.prototype = obj;
return new CloneFactory();
}
MyClass.prototype = clone(AnotherClass.prototype);
。このようにMyClass.prototype = AnotherClass.prototype
でしょう。
私はストレステストを実行しました。これは、特定の状況、つまり親のコンストラクタに多くのコードがある場合に効率的です。それ以外の場合はほぼ同じです。もう一つのメリット(または少なくとも私が有益であることが分かっている)は、サブクラスから情報が隠れることをある程度可能にするということです。特権を持つメソッドやメンバーは継承されません。
私が見落としている大きな落とし穴がありますか?
私はJavaScriptのエキスパートではありませんが、実際にはJavaScriptの新機能がありますので、私はGoogleを介して何かを見つけることができないため、これについてもう一度意見を述べたいと思います。私は悪いコードを実装したくない:)!
ありがとうございました!私は今までObject.createについて知りませんでした。 – SpaceFace