ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でオブジェクトを作成するいくつかのモードの紹介_基礎知識
js には、オブジェクトを作成し、オブジェクトに含まれるプロパティとメソッドを操作するためのいくつかのモードがあります。
一般に、コンストラクター名の最初の文字は大文字であり、非コンストラクター関数名の最初の文字は小文字です。もちろん、コンストラクターと一般関数の違いは方法だけです。 new を介して呼び出される関数であれば、new を介して呼び出されない場合は、通常の関数と同じように使用できます。
これらのモードについての私の理解を話してください:
ファクトリー モード: 一般的な関数を作成し、関数内で Object オブジェクトを作成し、そのオブジェクトにプロパティとメソッドを追加し、その値を割り当てて、最後にオブジェクトを返します。認識できないオブジェクトタイプです。
コンストラクター パターン: コンストラクターを作成し、これを使用して値を割り当てます。インスタンスが作成されるたびにメソッドが 1 回作成され、各メソッドは同じコマンドを実行します。は冗長です。この欠点はメソッドをグローバル環境に配置することで解決できますが、その場合はカプセル化が行われません。しかし、それはプロトタイプモードを通じて解決できます。
プロトタイプ パターン: すべての関数には、その関数メソッドによって作成されたすべてのインスタンスによって共有されるプロパティを含むオブジェクトへのポインターであるプロトタイプ属性があります。
プロトタイプ オブジェクト、コンストラクター、インスタンス間の関係は次のとおりです:
図: 1: コンストラクターとコンストラクターによって作成されたインスタンス。そのプロトタイプ属性はコンストラクターのプロトタイプ オブジェクトを指します。
2: コンストラクターのプロトタイプ オブジェクトには、コンストラクターを指すコンストラクター属性があります。
3: コンストラクターのプロトタイプ オブジェクトに含まれるすべてのプロパティとメソッドは、コンストラクターによって作成されたすべてのインスタンスで共有できます。
オブジェクト リテラルを使用してプロトタイプ オブジェクトを書き換えた後、コンストラクターがオブジェクト コンストラクターを指すようにする必要がある場合は、次のようにプロトタイプ オブジェクトのコンストラクター属性の値を変更する必要があります。オブジェクトがオーバーライドされても、プロトタイプ オブジェクトのコンストラクターは引き続き Person コンストラクターを指します。
最初にインスタンスを作成する場合: 属性またはメソッドを直接追加すると、インスタンスにアクセスできます。
プロトタイプ オブジェクトがオーバーライドされた場合、コンストラクターのプロトタイプは新しいプロトタイプ オブジェクトを指し、以前に作成されたインスタンスのプロトタイプは引き続き元のプロトタイプ オブジェクトを指すため、インスタンスは新しいプロパティまたは新しいメソッドにアクセスできません。新しいプロトタイプ オブジェクト。
プロトタイプ オブジェクトには共有のプロパティとメソッドが含まれており、各インスタンスがこの情報を持っているため、インスタンス間に違いはなく、パラメーターを渡すことはできません。これは私たちが望んでいることではありません。各インスタンスには共通の情報と異なる情報があるため、コンストラクターパターンとプロトタイプパターンを組み合わせて使用できます。
コンストラクター パターンとプロトタイプ パターンの併用:
静的プロトタイプ モード: 独立したコンストラクターとそのプロトタイプ オブジェクトを結合し、コンストラクター内でプロトタイプを初期化し、それにメソッドを追加します。
寄生コンストラクター パターン: ファクトリ パターンと似ていますが、違いは次のとおりです。寄生コンストラクター パターンはコンストラクターであり、new を通じてインスタンスを作成します。 確実なコンストラクター パターン: パブリック プロパティはなく、そのメソッドはこのオブジェクトを参照しません。インスタンスを作成するときは new を使用しないでください。プロパティ (つまり、渡されたデータ) には、メソッドを介してのみアクセスできます。
JavaScript でオブジェクトを作成するいくつかのモードに関する上記の紹介は、エディターによって共有されたすべての内容です。参考にしていただければ幸いです。また、Script Home をさらにサポートしていただければ幸いです。