JavaScript で OOP について学ぶ


ブログに決意を込めて



私は LaunchSchool の経験の 1 つのクラスであり、これまでのところ私の期待に応えています.私の小さな学校の「なんでも屋の 1 人 IT 部門」出身の LaunchSchool は、私の技術的バックグラウンドに非常に必要な磨きをかけてくれているようです.

JS-120 - 心配するのをやめて OOP を愛するようになった方法



JavaScript での OOP について学ぶことを検討してください.間違いなく、私が慣れ親しんでいるいくつかのアイデアだけでなく、いくつかの新しい工夫も含まれています. LaunchSchool のマスタリー メソッドの小道具 - もし私がオブジェクト参照についてぼんやりと理解していれば、プロトタイプはすぐに作成できるでしょう.

今日は、OOP パターンの簡単な要約です (私はアマチュアだと言いましたか? 情報を得るためにこれを読んでいる場合は、別の場所に行ってください).
  • コンストラクター関数
  • OLOO - (他のオブジェクトをリンクするオブジェクト)
  • ES6 クラス

  • コンストラクター関数




    function Car() {
      //code
    }
    
    let myCar = new Car();
    


    注意事項:
  • new キーワードは非常に重要です - コンストラクター関数は実際には何も返しませんが、new で呼び出すと新しいオブジェクトが作成されます (そして、それは実行コンテキストとして設定されます - つまり、コンストラクター内で this になります).新しいオブジェクト - また、Car.prototype が新しいオブジェクトの [[Prototype]] プロパティに割り当てられます.

  • OLOO - 他のオブジェクトにリンクされたオブジェクト




    let CarPrototype = {
      init(params){
         return this;
       }
    
      drive(){
      }
    }
    
    let car1 = Object.create(CarPrototype).init(args);
    


    ここでは、プロトタイプ オブジェクトを作成し、Object.create() を使用してプロトタイプの関係を設定します.従来の init メソッドを使用すると、初期プロパティを簡単に設定できます. init がどのように this を返すかに注意してください.これは、メソッド チェーンが機能するために絶対に必要です.

    ES6 クラス




    class Car {
      constructor(params){
    
      }
    
      drive() {
    
      }
    }
    let myCar = new Car(args);
    


    Java と Python に手を出した経験から、これは私が自然に引き寄せられるパターンです. constructor メソッドに注意してください - new を使用して呼び出され、サブクラス化するときに重要になります.

    私が持っている残りの質問、順不同


  • 一般的に使用されるパターンは 1 つですか?
  • 各メソッドの落とし穴は何ですか? (たとえば、コンストラクター関数を使用したサブクラス化には癖があるようです)?