オブジェクト指向

以下は手続き型の関数とオブジェクト指向の関数(クラス)の例。

// プログラムを「処理A、次にB、そしてC」のように、
// 単なる手続きの流れ・集まりとして考えたいとき、
// 手続き型関数(プログラミング)を用いる。
function 手続き型() {
  // 処理A
  // 処理B
  // 処理C
}

// プログラムを手続きの流れというよりも、
// 「個別具体的な個物AやBが何かをする・される」のように考えたいとき、
// オブジェクト指向の関数(プログラミング)を用いる。

// 猫という抽象概念を元にできた具体的なミケやタマが何かするケース
class 猫 {
  constructor(名前, 鳴き声) {
    this.名前 = 名前
    this.鳴き声 = 鳴き声
  }
  鳴く() {
    console.log(this.名前 + ': ' + this.鳴き声)
  }
}
// 個別のインスタンス(オブジェクト)を生成し、
let ミケ = new 猫('ミケ', 'ニャー')
let タマ = new 猫('タマ', 'にゃん')
// それぞれのインスタンスが何かする
ミケ.鳴く() // ミケ: ニャー
タマ.鳴く() // タマ: にゃん

// 同じことを手続き型関数でもできる
猫が鳴く手続き('ミケ', 'ニャー')
猫が鳴く手続き('タマ', 'にゃん')

function 猫が鳴く手続き(名前, 鳴き声) {
  console.log(名前 + ': ' + 鳴き声)
}