JavaScript TIL 14

7906 ワード

2021年7月19日に書かれた書類2号.
JavaScriptの勉強内容を整理しました.

オブジェクト向けプログラミング


プログラム言語

  • 初期プログラミング言語(C、ポートバーなど)
  • プログラム言語は、シーケンスコマンドの組合せである.
  • オブジェクト向け言語

  • 「クラス」と呼ばれるデータモデル青写真を用いてコード
  • を記述する.
  • 現代プログラミング言語(JAVA、C++、C#など)
  • JavaScript:オブジェクト向けに作成可能
  • OOP

  • プログラム設計哲学
  • すべてのコンテンツを「オブジェクト」にグループ化
  • が作成されると、オブジェクト内のすべてのコンテンツは、メモリが戻るまで
  • のままになります.
  • 4の主要な概念によって再利用性が得られる.
  • クラスとインスタンス

  • 類はプロトタイプである.(オブジェクトの青写真を作成)
  • 詳細(属性)を含まない青写真
  • の詳細のみが含む場合、オブジェクト
  • となる.
  • インスタンスはクラスインスタンスです.
  • クラス作成オブジェクト
  • クラスには、オブジェクトを作成するためのジェネレータが含まれています.
    次の画像の例を参照してください.

  • OOP


    パッヶージ

  • のデータと機能を組み合わせて
  • データ(属性)と機能(方法)を1つのオブジェクトに組み合わせる
  • .
  • 隠蔽:隠蔽実施、露出動作
  • 内部データまたは内部実装が露出しないことを保証
  • 詳細な実施またはデータを非表示にし、対象外の必須動作のみを露出する(方法)
  • .
  • の分散結合に有利:いつでも変更可能
  • ばらばら結合:コードが表す実際の状況と類似するようにコードを集合する
  • パッケージはコードを複雑にせず、再利用性を向上させます.

    抽象

  • 内部実装は非常に複雑で、実際に露出した部分は簡単になります.
  • 多くの機能が露出していないため、意外な変化を避けることができます.
  • 抽象VSカプセル化
  • パッケージ:非表示コードまたはデータにフォーカス
  • 抽象:ユーザーに不要なメソッドを暴露させるのではなく、クラスを単純な名前に定義することに重点を置いています.
  • クラスを定義する場合、メソッドと属性のみを定義してインタフェースと呼ぶ.
  • は抽象化され,インタフェースは簡単になる.
    不要なコードを減らすことで再利用性が向上します.
  • 継承


    子クラスは
  • 親クラスのフィーチャーを継承します.
  • 基本クラス(ベースクラス)の特徴は派生クラス(派生クラス)によって継承される
    コードを複雑にせず、シンプルな使用で変更の影響を最小限に抑える
  • ポリステート

  • オブジェクトも同様の方法であり、異なる方法で実現することができる.
    同じメソッドに対してif/else ifなどのオブジェクトプロパティとは異なる条件文を作成できます.
  • 下の写真で一目見ました.

    クラスとプロトタイプ


    Action Items


    OOPモードでのHumanの例

    class Human {
      constructor(name, age) {
        this.name = name;
        this.age = age;
      }
    
      sleep() {
        console.log(`${this.name}은 잠에 들었습니다`);
      }
    }
    
    let kimcoding = new Human('김코딩', 30);
    
    // 실습해보세요
    Human.prototype.constructor === Human; // 결과 => true
    Human.prototype === kimcoding.__proto__; // 결과 => true
    Human.prototype.sleep === kimcoding.sleep; // 결과 => true
    必ず下図を覚えておいてください.

    Humanクラス、インスタンス、プロトタイプの関係


  • 配列も同じ原理です.
  • 配列がArrayクラスであると考える例
  • プロトタイプには様々な方法が存在する.
  • Arrayクラスとインスタンスとプロトタイプの関係



    プロトタイプチェーン


    JavaScriptでオブジェクト向けプログラミングのプロパティの「継承」を実装する場合は、プロトコルタイプチェーンを使用します.
    let kimcoding = new Human('김코딩', 30);
    
    // 속성
    kimcoding.age;
    kimcoding.gender;
    // 메소드
    kimcoding.eat();
    kimcoding.sleep();
    
    // 학생(Student)과 사람(Human)이라는 클래스가 각각 존재한다고 가정
    // 클래스 Human의 메소드와 속성을 객체로 구현
  • クラスStudioは、Humanの基本的な方法を継承することができる.
  • // 클래스 Student의 속성과 메소드 예시
    let parkhacker = new Student('박해커', 22);
    
    // 속성
    parkhacker.grade;
    // 메소드
    parkhacker.learn();
  • 親クラス(ここではHuman):属性とメソッドを継承するクラス
  • サブクラス(ここではStudent):属性とメソッドを継承するクラス
  • また、このプロセスを継承と呼ぶ.
  • JavaScriptでは、extendsおよびsuperキーワードを使用して継承を実現できます.
  • Written with StackEdit .