CodeGym /コース /Frontend SELF JA /コンストラクターとメソッド

コンストラクターとメソッド

Frontend SELF JA
レベル 39 , レッスン 5
使用可能

6.1 クラスのコンストラクター

コンストラクターとクラスのメソッドは、JavaScriptのオブジェクト指向プログラミングの基本要素だよ。 オブジェクトを作成して初期化したり、その振る舞いを定義したりすることができるんだ。以下では、 コンストラクターとクラスのメソッドの動作や使い方を見ていこう。

コンストラクターって何?

コンストラクターはクラスの特別なメソッドで、新しいクラスのインスタンスを作成するときに呼ばれるよ。 オブジェクトを初期化したり、そのプロパティに値を設定したり、他の初期タスクを実行するために使われるんだ。

コンストラクターの定義

コンストラクターはconstructorキーワードを使って定義するよ。コンストラクター内部では thisキーワードを使ってオブジェクトのプロパティやメソッドにアクセスできるんだ。

構文:

    
      class ClassName {
        constructor(パラメータ) {
          // オブジェクトの初期化
        }
      }
    
  

例:

クラスPersonでは、constructorメソッドが2つのパラメータnameageを受け取っている。

これらのパラメータは、作成されたオブジェクトのnameageプロパティを初期化するために使われるよ。

JavaScript
    
      class Person {
        constructor(name, age) {
          this.name = name;
          this.age = age;
        }
      }

      const person1 = new Person('Alice', 30);
      const person2 = new Person('Bob', 25);

      console.log(person1.name); // 表示: Alice
      console.log(person2.age);  // 表示: 25
    
  

デフォルトコンストラクター

コンストラクターが明示的に定義されていない場合、JavaScriptは自動的に空のデフォルトコンストラクターを作成するよ。

例:

JavaScript
    
      class Animal {}

      const animal = new Animal();
      console.log(animal); // 表示内容: Animalクラスの{}
    
  

4.2 クラスのメソッド

クラスのメソッドはクラスの本体内で定義され、そのクラスによって作成されたオブジェクトに対して機能を提供するよ。 メソッドは自動的にクラスのプロトタイプに追加されるから、クラスのすべてのインスタンスがそれを継承して使用できるんだ。

構文:

    
      class ClassName {
        constructor(パラメータ) {
          // オブジェクトの初期化
        }
        
        メソッド1() {
          // メソッドの本体
        }
        
        メソッド2() {
          // メソッドの本体
        }
      }
    
  

例:

JavaScript
    
      class Car {
        constructor(brand, model) {
          this.brand = brand;
          this.model = model;
          this.mileage = 0;
        }

        drive(distance) {
          this.mileage += distance;
          console.log(`${this.brand} ${this.model} drove ${distance} miles. Total mileage: ${this.mileage}`);
        }

        getDetails() {
          return `${this.brand} ${this.model}, Mileage: ${this.mileage}`;
        }
      }

      const myCar = new Car('Toyota', 'Camry');
      myCar.drive(50); // "Toyota Camry drove 50 miles. Total mileage: 50"

      console.log(myCar.getDetails()); // "Toyota Camry, Mileage: 50"
    
  

説明:

  • クラスCarには2つのメソッドdrive()getDetails()が定義されている
  • メソッドdrive()は車の走行距離を増やし、走行した距離に関する情報を表示する
  • メソッドgetDetails()は車に関する情報を含む文字列を返す

6.3 プライベートメソッド

ECMAScriptの新しい仕様の導入により、クラスの外からアクセスできないプライベートメソッドやプロパティを作成することが可能になったよ。それには#記号を名前の一部として使うんだ。

プライベートメソッドとプロパティの例:

JavaScript
    
      class BankAccount {
        #balance = 0;

        constructor(initialBalance) {
          this.#balance = initialBalance;
        }

        #validateAmount(amount) {
          if (amount <= 0) {
            throw new Error('Amount must be positive.');
          }
        }

        deposit(amount) {
          this.#validateAmount(amount);
          this.#balance += amount;
          console.log(`Deposited ${amount}. New balance: ${this.#balance}`);
        }

        withdraw(amount) {
          this.#validateAmount(amount);
          if (amount > this.#balance) {
            throw new Error('Insufficient funds.');
          }
          this.#balance -= amount;
          console.log(`Withdrew ${amount}. New balance: ${this.#balance}`);
        }

        getBalance() {
          return this.#balance;
        }
      }

      const account = new BankAccount(100);
      account.deposit(50); // 表示: Deposited 50. New balance: 150
      account.withdraw(30); // 表示: Withdrew 30. New balance: 120
      console.log(account.getBalance()); // 表示: 120

      // プライベートメソッドやプロパティにアクセスしようとするとエラーになる
      account.#balance; // SyntaxError
      account.#validateAmount(50); // SyntaxError
    
  
1
Опрос
クラスとの出会い,  39 уровень,  5 лекция
недоступен
クラスとの出会い
クラスとの出会い
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION