JavaScript_ Build a Library


  • class、object、継承、getter、setterなどを使用してライブラリを構築
  • 3種類のメディア(book、movie、cd)は、以下の属性と方法を有する.
  • ToggleCheckOutStatus()は、true、false、trueに変換されるisCheckedOutの値を取得します.
  • getaverageRatingメソッドはRating配列の値の平均値を返し、Rating配列の合計はreduceメソッドで求め、Rating配列の長さに分けて再試行します.
  • パラメータのaddratingを作成します.評価に値をpush()で追加
  • extendsによるBookクラスとMovieクラスの作成(プロパティ、getters、メソッドを使用)
  • historyOfEverything変数名を使用して、次のプロパティからBookインスタンスを作成します.
  • Author: 'Bill Bryson'
  • Title: 'A Short History of Nearly Everything'
  • pages: 544
  • HistoryOfEverythingインスタンスからToggleCheckOutStatus()
  • を呼び出す
    isCheckedOutに格納されている値
  • historyOfEverythingインスタンスを記録
  • 4,5,5の値をHistoryOfEverythingに入力します.addrating()を3回呼び出す
  • historyOfEverything上.getaverageRating()ログ
  • speed変数名を使用して、以下のプロパティからMovieインスタンスを作成します.
  • Director: 'Jan de Bont'
  • Title: 'Speed'
  • Runtime: 116
  • 速度インスタンスからToggleCheckOutStatus()
  • を呼び出す
    isCheckedOutに格納されている値
  • の速度インスタンスを記録します.
  • 1、1、および5の値を速度で入力します.addrating()を3回呼び出す
  • の速度で.getaverageRating()ログ
  • と同じCDクラスを作成してみます
  • singer : 'Gemma Brown'
  • title : 'sunny day'
  • Track: 8
  • 変数名:時間なし
  • rating: 2,4,5
    [Output]
    true
    4.666666666666667
    true
    2.3333333333333335
    true
    3.6666666666666665
  • class Media {
      constructor(title) {
        this._title = title;
        this._isCheckedOut = false;
        this._ratings = [];
      }
    
      get title() {
        return this._title;
      }
    
      get isCheckedOut() {
        return this._isCheckedOut;
      }
    
      get ratings() {
        return this._ratings;
      }
    
      set isCheckedOut(value) {
        this._ischeckedOut = values; 
      }
    
      toggleCheckOutStatus() {
        this._isCheckedOut = !this._isCheckedOut;
      }
    
      getAverageRating() {
        let ratingSum = this._ratings.reduce((accumulator, rating) => accumulator + rating);
        return ratingSum / this.ratings.length;
      }
    
      addRating(value) {
        this._ratings.push(value);
      }
    }
    
    //creating Book class
    class Book extends Media {
      constructor(author, title, pages) {
        super(title); //  Pass it any arguments that the parent constructor uses
        this._author = author;
        this._pages = pages;
      }
      get author() {
        return this._author;
      }
      get pages() {
        return this._pages;
      }
    }
    
    // creating Movie class
    class Movie extends Media {
      constructor(director, title, runTime) {
        super(title);
        this._director = director;
        this._runTime = runTime;
      }
      get director() {
        return this._director;
      }
      get pages() {
        return this._pages;
      }
    }
    
    // historyOfEverything
    const historyOfEverything = new Book('Bill Bryson', 'A Short History of Nearly Everything', 544);
    
    historyOfEverything.toggleCheckOutStatus();
    console.log(historyOfEverything.isCheckedOut);
    
    historyOfEverything.addRating(4);
    historyOfEverything.addRating(5);
    historyOfEverything.addRating(5);
    console.log(historyOfEverything.getAverageRating());
    
    
    // speed
    const speed = new Movie('Jan de Bont', 'Speed', 116);
    
    speed.toggleCheckOutStatus();
    console.log(speed.isCheckedOut);
    
    speed.addRating(1);
    speed.addRating(1);
    speed.addRating(5);
    
    console.log(speed.getAverageRating());
    
    // creating CD
    class CD extends Media {
      constructor(singer, title, track) {
        super(title);
        this._singer = singer;
        this._track = track;
      }
      get singer() {
        return this._singer;
      }
      get track() {
        return this._track;
      }
    }
    
    const timeless = new CD('Gemma Brown', 'Sunny day', 8);
    
    timeless.toggleCheckOutStatus();
    console.log(timeless.isCheckedOut);
    
    timeless.addRating(2);
    timeless.addRating(4);
    timeless.addRating(5);
    
    console.log(timeless.getAverageRating());