LoginSignup
0
0

More than 3 years have passed since last update.

JavaScript備忘録(数値、クラス)

Last updated at Posted at 2020-11-10

数値

  const scores = [10,3,9];

  let sum = 0;

  scores.forEach(score =>{
    sum += score;
  });

  const avg = sum / scores.length;

  console.log(sum);
  console.log(avg);

  console.log(Math.floor(avg)); //切り捨て
  console.log(Math.ceil(avg)); //切り上げ
  console.log(Math.round(avg)); //四捨五入
  console.log(avg.toFixed(3)); //少数点以下3桁まで

  console.log(Math.random()); //0以上1未満のランダムな数値

  console.log(Math.floor(Math.random()*6)+1);
  //1~6のランダムな数値

時刻

  const d = new Date();
  console.log(d);//現在の時刻

  console.log(`${d.getMonth()+1}月${d.getDate()}日`);

  const d = new Date(2019,10); // 2019/11/01 00:00:00
  d.setHours(10,20,30); // 2019/11/01 10:20:30
  d.setDate(31); //2019/12/01 10:20:30
  d.setDate(d.getDate()+3); //2019/12/04 10:20:30
  console.log(d);

alert confirm

  alert('hello');

  const answer = confirm('削除しますか?');
  if(answer){
    console.log('削除しました');
  }else{
    console.log('キャンセルしました');
  }

setInterval

let i = 0;

 function showTime() {
   console.log(new Date());
   i++;
   if(i > 2){
     clearInterval(intervalId); //三回実行されると処理が止まる
   }
 }

 const intervalId = setInterval(showTime, 1000); //1000ミリ秒ごとに関数を実行する
 // 関数を引数として渡す場合関数名だけを書く

setTimeout

 let i = 0;

 function showTime() {
   console.log(new Date());
   const timeoutId = setTimeout(showTime, 1000); //一度だけ実行される
   i++
   if(i > 2){
     clearTimeout(timeoutId); //三回実行されると処理が止まる
   }
   }

   showTime(); 
   //showTimeを繰り返し呼び出すことで繰り返し処理のようになる

例外処理

  const name = 5;

  try{
    console.log(name.toUpperCase()); 
    //大文字になる(文字列にしか使えない)
  }catch(e){
    console.log(e);
  }
  // 例外処理することで処理を止めずに最後まで実行される


  console.log('Finish!');

オブジェクト

  const posts = [
    {
      text: 'JavaScriptの勉強中',
      likeCount: 0,
    },
    {
      text: 'JavaScript!!',
      likeCount: 0,
    },
  ];

  function show(post){
    console.log(`${post.text} - ${post.likeCount}いいね`);
  }
  show(posts[0]);

メソッド

  const posts = [
    {
      text: 'JavaScriptの勉強中',
      likeCount: 0,
      // show: function(){ //関数をプロパティの値にした場合その関数をメソッドと呼ぶ
      show(){ // 上記から省略可能 
        console.log(`${this.text} - ${this.likeCount}いいね`);
        // 同じオブジェクト内のプロパティにアクセスするにはthisを使う
      }
    },
    {
      text: 'JavaScript!!',
      likeCount: 0,
      show(){  
        console.log(`${this.text} - ${this.likeCount}いいね`);
      },
    },
  ];


  posts[0].show();
  posts[1].show();

クラス

  class Post{ // クラス
    constructor(text){
      this.text = text; 
      this.likeCount = 0;
      //このクラスから作られるインスタンスをクラス内ではthisで表現する
    }

    show(){ 
      console.log(`${this.text} - ${this.likeCount}いいね`);
    }
  }

  const posts = [ // クラスから作られるオブジェクトのことはインスタンス
    new Post('JavaScriptの勉強中'),
    new Post('JavaScript!!'),
  ];


  posts[0].show();
  posts[1].show();

カプセル化

 class Post{ 
    constructor(text){
      this.text = text; 
      this.likeCount = 0;
    }

    show(){ 
      console.log(`${this.text} - ${this.likeCount}likes`);
    }

    like(){
      this.likeCount++;
      this.show(); // 同じクラス内のメソッドはthisを付けて呼び出す
    }
  }

  const posts = [ 
    new Post('JavaScriptの勉強中'),
    new Post('JavaScript!!'),
  ];

  posts[0].like();

静的メソッド

  class Post{ 
    constructor(text){
      this.text = text; 
      this.likeCount = 0;
    }

    show(){ 
      console.log(`${this.text} - ${this.likeCount}likes`);
    }

    like(){
      this.likeCount++;
      this.show(); 
    }
    // 静的メソッド(インスタンスを介さず直接クラスから呼び出せるメソッドの事)
    // thisは使わない(静的メソッドではインスタンスを作らず呼び出すから使えない)
    static showInfo(){ // クラスから直接呼び出す静的メソッドにしたい場合staticをつける
      console.log('Post class version 1.0');
    }
  }

  const posts = [ 
    new Post('JavaScriptの勉強中'),
    new Post('JavaScript!!'),
  ];

  Post.showInfo(); //クラス名.メソッド名で実行できる

クラス 継承

  class Post{ 
    constructor(text){
      this.text = text; 
      this.likeCount = 0;
    }

    show(){ 
      console.log(`${this.text} - ${this.likeCount}likes`);
    }

    like(){
      this.likeCount++;
      this.show(); 
    }    
  }
  class SponsiredPost extends Post{ 
    constructor(text, sponsor){
      super(text);
      // 子クラスのcounstructorでthisを使うにはsuper()とする必要がある
      this.sponsor = sponsor;
    }

    show(){ 
      super.show(); //super.メソッド名とすると親クラスのメソッドが呼ばれる
      console.log(`...sponsored by${this.sponsor}`);
    }

  }

  const posts = [ 
    new Post('JavaScriptの勉強中'),
    new Post('JavaScript!!'),
    new SponsiredPost('プログラミング', 'dotinstall'),
  ];


  posts[2].show();
  posts[2].like();

0
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
0
0