ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript コンストラクターとコンストラクター属性_JavaScript のヒント
たとえば、Chrome で次のプログラムをデバッグすると、これが明確にわかります:
しかし、物事はそれほど単純ではありません。次のコードをもう一度見てください:
明らかに、この時点では、obj のコンストラクターはそれを作成した関数ではなくなり、obj.name も未定義であることに注意してください。コンストラクターを変更しても、コンストラクターによって生成されたオブジェクトには影響しません。本当の理由は、オブジェクトのコンストラクターはそのコンストラクターのプロトタイプ.コンストラクターであり、各関数にはデフォルトでプロトタイプがあり、それ自体を指すコンストラクター属性があります。 JavaScript の本来の設計は、各オブジェクトのコンストラクターが独自のコンストラクターを指すようにすることだと思いますが、上記のような例ではこれが破壊される可能性があります。さらに、この設計は実際には完璧ではありません。大きな問題は、継承時にコンストラクターのポインターを注意深く管理する必要があることです。最も単純な継承では、サブクラスのコンストラクターのプロトタイプを親クラスのインスタンスに設定でき、親クラスのインスタンスのコンストラクターは親クラスのコンストラクターであるため、サブクラスのプロトタイプのコンストラクターは親クラスのインスタンスに設定されます。 subclass は親クラスのコンストラクターであり、これによりサブクラスの各オブジェクトのコンストラクターが親クラスのコンストラクターになります。これは混乱を引き起こしやすいです。
最後に、前の記事で残った問題に戻りましょう。上記は、Extjs 公式 Web サイトで提供されている Observable の継承の例です。