11/13JavaScript2022/11/13JavaScriptのオブジェクト指向は「プロトタイプベースで実装する方法」と「ES2015から導入されたクラス構文を利用して実装する方法」が存在します。各実装方法について確認します。通じて、インスタンスを生成するためのFunctionコンストラクタを定義します。呼び出し、インスタンスを生成します。定義することで、インスタンスのプロパティを設定できます。定義しているためインスタンスにnameプロパティが設定されています。単なるAnimalコンストラクタ内でのローカル変数のため、インスタンスには設定されません。prototypeプロパティについてprototypeプロパティは、関数(Functionオブジェクト)が生成されたときに自動的に作られるプロパティで、constructorプロパティのみをもつオブジェクトを参照しています。prototypeプロパティが参照するオブジェクトに設定したメンバは、インスタンス化されたオブジェクトで暗黙的に参照されます。★1p1インスタンス、p2インスタンスともにnameプロパティを設定していませんがnameプロパティにアクセスすると『鈴木』と表示されます。インスタンス化されたオブジェクトでプロパティが設定されていない場合、prototypeオブジェクトのプロパティを参照するためです。★2p1インスタンスのnameプロパティを設定してます。設定を行うと、p1インスタンス自身がnameプロパティを持つようになるのでprototypeオブジェクトのnameプロパティを参照しなくなります。★3prototypeオブジェクトのnameプロパティの値を書き換えてます。p2インスタンスはprototypeオブジェクトのnameプロパティを参照するため『佐藤』と表示されるようになりました。p1インスタンスのnameプロパティを削除してます。その後、p1インスタンスでnameプロパティにアクセスすると『佐藤』と表示されるようになりました。これはp1インスタンスでnameプロパティを持たなくなり、prototypeオブジェクトのnameプロパティを参照するようになったためです。利用したいのであれば以下のようにします。子クラスのprototypeプロパティに、親クラスのインスタンスを設定することでクラスが継承されます。★3★1XxxクラスをYyyクラスが継承してます。★2YyyクラスをZzzクラスが継承してます。in文を使って、オブジェクト内に存在するプロパティを取り出してみます。オブジェクト自身にプロパティがあるかどうかを判断します。クラス構文で実装ES2015からクラス構文でも書けるようになりました。Animal定義したクラスからインスタンスを生成してみます。ジョンgetter経由でなくても取得できてしまうので注意が必要です。静的メソッド(インスタンスを生成せずに呼び出すメソッド)を定義できます。継承させることもできます。型の確認方法)2018/07/19配列とオブジェクト(連想配列)の組み合わせパターン2018/07/21技術系の記事を中心に、役に立つと思ったこと、整理したい情報などを掲載しています。