Class


JavaScript Class


現代のJavaScriptにはオブジェクト向けのプログラミングが可能なクラスが存在する.
クラスは、オブジェクト向けプログラミングで特定のオブジェクトを作成するための変数とメソッドを定義するフレームワークです.
オブジェクトを定義するための状態(メンバー変数)とメソッド(関数)から構成されます.
すなわち,フレームを構築し,フレームで複数のオブジェクトを生成する方法である.
自動車を例にとると、対象に向かって説明できるものが有名です.
ES 6では、例のクラスを使用してオブジェクトを作成する方法が導入されている.
class Car{
  constructor(name, brand, color){
    this.name = name
    this.brand = brand
    this.color = color
  }
  drive(){
    this.name + "은" + this.color
  }
}
classキーを使用してオブジェクトを宣言できます.
コンストラクション関数は、オブジェクトを作成するたびに作成されます.(初期化)
通常はこれを使ってそれらの値を得ることができます.
内部での使い方ができます.

≪インスタンス|Instance|emdw≫

let myCar = new Car('avante', 'hyndai', 'black')
let myCar2 = new Car('a3', 'audi', 'blue')
newキーを使用して、上記のオブジェクトを作成できます.
これをインスタンスと呼びます.

prototype


このオブジェクトのメソッドまたは変数はどのように格納されますか.
prototypeというpropertyに格納されます.
Userという名前のオブジェクトを作成したとします.

User.Prototypeでは、メソッドとコンストラクション関数がユーザーを所有していることがわかります.
すなわちprototypeの作成者は,自分をnewとして作成したときに保存したと考えられる.
これにより、プロトタイプには多くの方法が含まれます.
例:
Array.prototype.sort
配列のソート方法を表示するだけでプロトタイプが表示されます.
類推から,Arrayオブジェクトはオブジェクトであり,プロトタイプではsortという方法が実現されていることが分かる.

classは関数です。

typeof Car // 'function'

クラスのthis


さっきのコードでこれを見てみましょう.
class Car{
  constructor(name, brand, color){
    this.name = name
    this.brand = brand
    this.color = color
  }
  drive(){
    this.name + "은" + this.color
  }
}
これは通常、関数の実行に伴って変化します.
Carオブジェクトでは、これはどこを指しますか?
new Car()
Carオブジェクトが検索されます
だから見たところ.
alert(this === window) // true, 호출자는 window

const caller = {
  f: function() {
    alert(this === window)
  },
}
caller.f() // false, 호출자는 caller 객체
global変数windowはthisと同じと考えられます.
呼び出し元オブジェクトのfメソッド呼び出し時
すなわち,呼び出し元オブジェクトを表示するためfalseが現れる.