ES 6問答-class継承


classの継承:


前の内容
    class Point {
     constructor(x, y) {
      this.x = x
      this.y = y
     }
     toString() {
        return `(${this.x},${this.y})`
     }
     /*   */
     static hello() {
        console.log("hello world!")
     }
    }

    //  , 
    // super  。 super , this
    class ColorPoint extends Point {
     constructor(x, y, color) {
      super(x, y) // super , , this 
      this.color = color
     }
     toString() {
      //  super ( ), Point.prototype
      console.log(Point.prototype.toString === super.toString) // true
      return `color: ${this.color}, ${super.toString()}`
     }
    }
  • 子クラスと親クラスは、どのキーワードで継承されますか?親はPoint、子はColorPointはどう書きますか?extendsキーワード
    class ColorPoint extends Point{
     
    }
  • を介して
  • サブクラスのプロパティとメソッドで、どのキーワードが必要ですか?このキーワードはどう使いますか?どうしてそう使うの?superキーワードは必須です.superキーワードには、メソッドとオブジェクトの2つの使い方があります.メソッドとしてconstructorメソッド(サブクラスの構造に使用)で使用する場合は、thisの前に呼び出す必要があります.オブジェクトとして使用する場合は、他のメソッドで親を呼び出すメソッドを使用します.親のプロトタイプオブジェクトを指します.
    Point.prototype.toString === super.toString // true
    /*
    super , , ,   Point.prototype === super  
    */
  • ColorPoint.hello()は何を出力しますか?どうして?ハローワールドが出力されます!ColorPointPointのサブクラスであるため、そのすべてのメソッドが継承されます.hello()Pointの静的方法であり、布団類ColorPointにも継承される.
  • 子から親を取得する方法コードプレゼンテーション
    Object.getPrototypeOf(ColorPoint) === Point   //true
    は、Object.getPrototypeOf(childClass)の方法で、あるクラスが別のクラス
  • を継承するか否かを判断することができる.
  • superの2つの使用シーンsuperは、メソッドとしても、オブジェクトメソッドとしても、サブクラスのconstructorとしても使用できます.≪オブジェクト|Objects|ldap≫:サブクラスの他のメソッドで使用します.一般メソッド=>親プロトタイプオブジェクトを指します(親メソッドはすべてプロトタイプオブジェクトに定義されます).静的メソッド=>親を指す
  • サブクラスの__proto__属性は、何を指していますか?子クラスの__proto__属性は親クラス
    colorPoint.__proto__ === Point // true
    //  
  • を指す.
  • サブクラスのprototypeプロパティの__proto__プロパティは何を指しますか?サブクラスのprototype属性の__proto__属性は、親クラスのprototype属性
    colorPoint.prototype.__proto__ === Point.prototype  // true
    //  
  • を指す.
  • 原生構造関数はどれらがありますか?Boolean構造関数の使い方を簡単に述べる.Boolean Number String Array Date Function Regexp Error Object
    Boolean()  
    Boolean  。 , 
     , Boolean ,Boolean(exp)   !!(exp)
  • ES 5の方法は継承を実現して、原生の構造関数に継承することができますか?どうして?ES 5は、子クラスのインスタンスオブジェクトthisを新規作成し、親クラスの属性を子クラスに追加します.親クラスの内部プロパティが取得できないため、元のコンストラクション関数を継承できません.
  • ES 6の方法は継承を実現して、原生の構造関数に継承することができますか?どうして?ES 6は、親のインスタンスオブジェクトthisを新規作成し、次に子のコンストラクション関数でthisを修飾し、親のすべての動作を継承できるようにします.