Class



基本構文


類似したタイプのオブジェクトを作成する場合は、クラスを導入してクラスを継承することで作成できます.しかし厳密にはクラスは「関数」と見なすことができる.
ES 6からクラスを作成する構文が非常に簡潔になります.たとえば、「Car」というクラスがあり、インスタンスを作成するとします.
class Car{
  constructor(){ ... }
  method1()
  method2()
  method3()
  ...
}

const arr1 = new Car();
const arr2 = new Car();
コンストラクション関数(){...}オブジェクトの初期状態値を決定します.
class Car {
  constructor(name) {
    this.name = name;
  }
  carName() {
	console.log(`이 차의 명칭은 ${this.name}입니다`);
  }
}

// 사용법:
let car = new Car("Hyundai");
user.carName();
constructor()は、新しく作成したcarオブジェクトの名前を指定し、carNameで使用します.クラス関数の本文がconstructorで作成されていない場合は、関数の本文が空であると考えられます.
クラスには複数のメソッドが存在することができ、これはクラスのプロトタイプを参照していると言える.この例ではcarName()はCarです.プロトタイプに格納します.
Car.prototypeからcarName:function,constructor:carにアクセスします.言い換えれば、クラス名Carは、対応するプロトタイプにおいて、コンストラクション関数メソッド自体として定義される.
クラスとクラスで作成されたオブジェクトを特定します.
class Car{
  constructor(company, model){
    this.company = company;
    this.model = model;
    this.userGears = ['P', 'N', 'R', 'D'];
    this.userGear = this.userGears[0];
  }
  
  shift(gear){
    if(this.userGears.indexOf(gear) < 0){
      throw new Error(`Invalid gear: ${gear}`);
    }
    this.userGear = gear;
  }
}

const car1 = new Car("Hyundai", "Genesis");
const car2 = new Car("Tesla", "Model S");

car1.shift('D'); // shift메서드의 this가 car1에 묶인다.
car2.shift('R'); // shift메서드의 this가 car2에 묶인다.

console.log(car1.userGear); //'D'
console.log(car2.userGear); //'R'
新しいインスタンスごとにshift()メソッドの値が指定されていない場合、コンストラクタ設定の初期歯車thisが作成されます.userGearは「P」になり、shift()に値を入力すると対応する値はthisになります.userGearsにインデックスが存在する場合、これはこれです.userGearは対応する値にバインドされます.

クラスと関数の違い


クラス内の特殊な構成[FunctionKind]:「classConstructorが後を追っています.そのため、新しいクラスでインスタンスを作成するには、ジェネレータnewを一緒に書く必要があります.クラスではなく一般的な関数の場合、この特殊なpropertyはありません.JavaScriptエンジンはこれをチェックするので、クラスと関数には明らかな違いがあります.」
また、クラス内のメソッドはリストできず(列挙可能)、厳格なモードでのみ動作します.

クラス式