私は JavaScript をいじっており、特にオブジェクト指向プログラミングをクラスなどでシミュレートしていました。
私は継承を達成するこの方法について知っていました
MyClass.prototype = new AnotherClass();
しかし、私は満足していませんでした. のコンストラクタを呼び出す方法が好きではありませんでしたAnotherClass
. だから私は遊んでいて、うまくいくと思われるものを思いついたので、基本的にセカンドオピニオンが必要です.
function clone (obj)
{
function CloneFactory () {}
CloneFactory.prototype = obj;
return new CloneFactory();
}
MyClass.prototype = clone(AnotherClass.prototype);
プロトタイプを複製することにより、その新しいコピーを取得し、それをMyClass
のプロトタイプに割り当てて、継承されたプロパティを変更しても親のプロトタイプのプロパティに影響を与えないようにします。このようにMyClass.prototype = AnotherClass.prototype
。
私はストレス テストを実行しましたが、これは特定の状況下でより効率的です。つまり、親のコンストラクターに多くのコードがある場合、それ以外の場合はほぼ同じです。もう 1 つの利点 (または少なくとも私はそれが有益であると思います) は、サブクラスから情報をある程度隠すことができることです。特権メソッドとメンバーは継承されません。
私が見落としている大きな落とし穴はありますか?
私は JavaScript の専門家ではありません。実際、私は JavaScript にかなり慣れていないので、Google で何も見つけられないようなので、これについてセカンドオピニオンを持ちたいと思います。私は悪いコードを実装したくありません:)!