【javascript】Object.assign()を利用して、Composition的にprototype拡張する方法

「Composition over inheritance」とも言われているように、オブジェクト指向では、無為に継承を行うよりも、Compositionのように「何ができるか」という役割を親クラスに追加していくほうが好ましいと言われています。

今回は、javascriptのコンストラクタ関数に、Object.assign()を使用して、Composition的にprototype拡張する方法をご紹介します。

Object.assign()とは?

そもそも、Object.assign()とは、上記の例のように、ターゲットとされるオブジェクト(第一引数)に他のObjectをassignするために使用されます。

このObject.assign()を利用して、コンストラクタ関数をprototype拡張していきます。

Object.assign()を使って、prototype拡張する

上記のコードのように、Car.prototypeに対して、drive, stopというオブジェクトをアサインすることで、Car()というコンストラクタ関数のprototypeにdoDriveメソッドとdoStopメソッドを追加できます。

このような形でコンストラクタ関数に後からObjectをassignすることで、コンストラクタ関数をprototype拡張していくことが可能です!

ABOUTこの記事をかいた人

新卒でノマドワーカー(webデザイナー)として独立し、半年で月収100万円を達成する。その後、事務所を売却(バイアウト)したり、Youtuber(最高月間視聴回数109万回、チャンネル登録者1万人)をしたり、Openrecの公式配信者としてゲーム生実況をしたり、ベンチャー企業のCOOをしたり、パラレルキャリアを歩んできました。 2019年にミニマムライフコストを不労所得で稼げるようになったため、いまは、お金のことを考えずに、様々な企業でエンジニア修行をさせていただきながら、複数のメディアやアプリとweb制作事務所を運営しています。 趣味は株式投資(米国・日本株メイン)で、トレードを楽しむ日も多いです!