最初からJavaScript|クラス1▼

1865 ワード

⌝出典:もう一度最初から、JavaScriptの投稿は李雄模()です. '「モダンJavaScript Deep Dive」 きろく

•類は原型の文法糖ですか?


JavaScriptは、プロトタイプベースのオブジェクト向け言語です.
キャプチャタイプベースのオブジェクト向け言語は、クラスを必要としないオブジェクト向けプログラミング言語です.
ES 5では、クラスを必要とせずにコンストラクション関数とプロトタイプによってオブジェクト向け言語の継承を実現します.

ES 6のクラスは、既存のプロトコルベースのオブジェクト向けモデルをサポートせず、新しいクラスベースのオブジェクト向けモデルも提供しない.実際、クラスは関数であり、既存のプロトタイプベースのモードをクラスベースのモードとして使用できる「構文糖」と見なすこともできる.
ただし、クラスとコンストラクション関数は、プロトタイプベースのインスタンスを作成しますが、それらの動作は完全に同じではありません.

クラスとコンストラクション関数の違い!

  • クラスは、新しい演算子がない場合に呼び出されるとエラーが発生し、コンストラクション関数は、新しい演算子がない場合に通常の関数として呼び出されます.
  • クラスは、継承をサポートするextendsおよびスーパーキーワードを提供します.でもコンストラクション関数はX!
  • クラスのすべてのコードは、デフォルトの厳格なモードで実行されます.
  • クラスのコンストラクション関数、プロトタイプメソッド、および静的メソッドの「Property Treviewer」[Enumerable]値はfalseです.リストされません.
  • クラスとコンストラクション関数は、プロトタイプベースのオブジェクト向け特性を実現します.これは非常に似ていますが、クラスはコンストラクション関数ベースのオブジェクト作成方法よりも堅牢で信頼性があります.特にクラスのextendsとsuperキーワードは,継承関係をより簡潔明瞭にする.
    --->🔴 したがって、クラスは、プロトタイプベースのオブジェクト作成モードの単純な構文糖と見なすよりも、新しいオブジェクト作成メカニズムと見なすほうがよい.

    クラス定義


    クラスは「1レベルオブジェクト」で、次の特徴があります.
  • は、無名の文字として作成できます.実行時に
  • を作成できます.
  • 変数やデータ構造(オブジェクト、配列)などを格納できます!
  • 関数のパラメータとして渡すことができます!
  • 関数の戻り値として使用できます.
  • class Person{
    
      constructor(address){
      this.name = 'moon';       //인스턴스 프로퍼티 초기값 적용!
      this.address = address;
      }
    -------------------------------------------------------  1
      
      sayHi(){
      console.log(`hi! my name is ${this.name}`
      }
      
    -------------------------------------------------------  2
      
      static sayHello(){
      console.log('hi!');
      }
      
     ------------------------------------------------------- 3 
      
    }
    クラスマスターで定義できるメソッドは、次のとおりです.
    1.コンストラクション関数(コンストラクション関数)
    2.プロトタイプ方法
    3.静的方法の
    3種類あります.