1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【教材】JavaScriptの教材を作ってみました3 〜クラス構文〜

Last updated at Posted at 2020-12-19

※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。

半人前のくせに、偉そうに教材を作ってみました。

学べる技術

  • クラス構文
  • 継承
  • コンストラクタ
  • インスタンス化

問題1

Humanクラスをインスタンス化してhumanインスタンスを作成し、
コンソールにTaroと出力するようメソッドを呼び出してください。

class Human {
  constructor(name) {
    this.name = name;
  }
  sayName() {
    console.log(this.name);
  }
}
回答例
let human = new Human("Taro"); 
//インスタンス作成時に引数で渡した値がコンストラクタの引数となります。
human.sayName();

//Taro

問題2

{
  let name = "Taro";
  console.log(`Mr.${name}`);
}

{
  let name = "Ken";
  console.log(`Mr.${name}`);
}
//Taro
//Ken

類似する二つの処理をクラスにまとめて下さい。
同じ結果になるように、作成したクラスをインスタンス化してください。

回答例
class CallName {
  constructor(name) {
    console.log(`Mr.${name}`);
  }
}

let callName1 = new CallName("Taro");
let callName2 = new CallName("Ken");

//コンストラクター関数に定義された処理は、インスタンス化されたと同時に実行されます。

問題3

class Human {
  constructor(name) {
    this.name = name;
  }
  sayName() {
    console.log(this.name);
  }
}

Humanクラスを継承するBabyを作成し、Babyクラスからインスタンを作成しsayNameメソッドを呼び出した場合

//Ken
//Ongya

とコンソールに出力されるプログラムを作成してください。(kenの部分は親メソッドを利用してください)

回答例
class Baby extends Human {
//コンストラクタ関数を定義しない場合、スコープチェーンにより親のコンストラクタ関数が呼び出される。
  sayName() {
    super.sayName();
    console.log("Ongya");
  }
}

let baby = new Baby("Ken");
baby.sayName();

※回答例はあくまで一例です。あまり鵜呑みにしないでください。

参考:

[【JavaScript】クラス構文について 1]
(https://qiita.com/sho_U/items/aaf31fad5394edb70861)
【JavaScript】クラス構文について 2 〜継承〜

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?