その理由は、Javascript では疑似古典的継承を使用できますが、実際には独自のextend
orを実装する必要があるためinherit
です。
foo.bar
プロトタイプの継承についてはどうですか -が使用されている場合bar
、 が のプロパティではない場合foo
、インタープリターまたはコンパイルされたコード (Google V8 を使用している場合など) はプロトタイプ チェーンを上っていくという機能があると思いますが、 objectb
の非表示のプロトタイプ プロパティをa
プロトタイプ チェーンとして指すようにする組み込みメソッドはありません。clone()
関数 orを定義して追加する必要がありObject.create()
ます。さらに、純粋なプロトタイプの継承コードには、コンストラクターがまったくないことがわかります。したがって、プロトタイプ コードでは、コンストラクター (コンストラクター関数) が存在しないように見えます。しかし、プロトタイプの継承を使用する場合、実際にはclone()
コンストラクターを使用して実装する必要があります。これは、疑似古典的な継承の側面に似ています。
では、元の Javascript は実際には疑似古典的継承でもプロトタイプ継承でもないように思われますか? このウィキペディアの記事によると、10 日以内に市場に出る必要があると読みました。しかし、1995 年に Javascript が登場してから 1 年か 2 年後に、少なくとも Javascript の Netscape バージョンにはまだextend
andObject.create()
メソッドが追加されていなかったのはなぜだろうか?
この質問は、Javascript の疑似古典的およびプロトタイプ部分のいくつかの概念を理解し、明確にすることを目的としています。そして、それは本当ですか?元の Javascript 自体は、疑似古典的またはプロトタイプの継承をサポートしていませんか?