Boy.prototype = new Human;
誰もが継承をシミュレートするために使用している理由がわかりません。ほら、私たちが欲しいのはAの関数ですよね?新しいAをインスタンス化せずにそれを行うことができます(実際、新しいAをインスタンス化すると、実際にインスタンス化関数を実行しているという意味で、望ましくない結果が得られます)。
それで、これはより良い解決策ではありませんか?
for (var prop_name in Human.prototype) {
Object.defineProperty(
Boy.prototype,
prop_name,
Object.getOwnPropertyDescriptor(Human.prototype,prop_name)
);
}
私たちがその特定であり、Human.prototypeの列挙可能なプロパティだけでなくObject.getOwnPropertyNames
、プロトタイプチェーンでそれを使用して呼び出すことでそれを実現できることを望んでいるとしましょう。これは、を通じて利用できますObject.getPrototypeOf
。
Boy.prototype = new Human;
では、より良いオプションを利用できる場合に、継承をシミュレートすることの利点は正確には何でしょうか。