⊗jsOpBsInr 1 of 60 menu

JavaScriptにおけるクラスとオブジェクト入門

これからJavaScriptにおけるオブジェクト指向プログラミング(OOP)を学びます。 実際の例から始めて、それをJavaScriptに当てはめてみましょう。

例として自動車を考えてみます。 自動車には車輪、色、ボディタイプ、エンジン排気量などがあります。 また、ドライバーは自動車に命令を出すことができます:走る、止まる、右に曲がる、左に曲がるなどです。

これは、共通の特性(すべてに車輪があり、すべてに命令を出せる)を持つ自動車というクラスが存在すると言えます。

路上に止まっている具体的な一台の自動車は、このクラスの一員、言い換えればこのクラスのオブジェクトです。 このクラスのすべてのオブジェクトは、車輪の数、色、ボディタイプといったプロパティと、 走る、止まる、右に曲がる、左に曲がるといったメソッドを持っています。

言い換えれば、クラス自体は設計図であり、工場がその設計図に基づいて自動車を製造します。 オブジェクトは、その設計図に基づいて作られた自動車そのものです。

JavaScriptでは、クラスはキーワードclassとそれに続くクラス名を使用して作成されます。 クラスCarを作成してみましょう:

class Car { // ここにコード、つまりJavaScriptによる自動車の設計図を書く }

次に、この設計図に基づいて作られる全ての自動車が、 色と燃料の量というプロパティを持つように指定しましょう。

そのために、クラス内にプロパティcolorとプロパティfuelを書きます:

class Car { color; // 自動車の色 fuel; // 燃料の量 }

次に、このクラスのメソッドを作成しましょう。 JavaScriptでは、メソッドは通常の関数に似ていますが、キーワードfunctionを使わずに宣言します。

先ほど述べたように、この自動車は走ることができ、曲がることができ、止まることができます。 クラス内に対応するメソッドを作成しましょう:

class Car { color; // 自動車の色 fuel; // 燃料の量 // 走る命令: go() { // 何らかのJavaScriptコード } // 曲がる命令: turn() { // 何らかのJavaScriptコード } // 止まる命令: stop() { // 何らかのJavaScriptコード } }

これで自動車の設計図が完成しました。 次に、工場に行き、このクラスのオブジェクト(具体的な自動車)を作る必要があります。

JavaScriptでは、これはキーワードnewの後にクラス名を書くことで行われます:

new Car; // 工場に自動車を作るよう命令する

しかし、単にクラスのオブジェクトを作成しただけでは何も起こりません (これは、例えば配列を宣言してもどこにも保存しないのと同じです)。 このオブジェクトを保持する変数が必要です。

この変数をmyCarと呼ぶことにして、作成したオブジェクトを代入しましょう:

let myCar = new Car;

自動車が作成されたら、そのプロパティにアクセスできます。 プロパティへのアクセスはドット(.)を使って行います。 オブジェクトのプロパティを設定してみましょう:

let myCar = new Car; // 工場に自動車を作るよう命令する myCar.color = 'red'; // 赤色に塗装する myCar.fuel = 50; // 燃料を補給する

これで自動車が作成され、塗装され、燃料が補給されました。 これで、この自動車のメソッドを通して命令を出すことができます。

メソッドへのアクセスもドットを使って行われますが、 プロパティとは異なり、メソッド名の後に丸括弧を書きます。 オブジェクトに命令を出してみましょう:

myCar.go(); myCar.turn(); myCar.stop();
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否