class-understanding-ECMAScipt6 독서노트 9.md

2650 단어

전언


전에 한 번 면접을 봤는데, 면접관이 나에게 몇 가지 상대를 대하는 디자인 방식이 있느냐고 물었다.나는 멍해졌다. 비록 고급 프로그램 설계의 6장을 여러 번 보았지만 정말 오랫동안 쓸모가 없었다. 만약 면접 준비를 하지 않은 것이 면접관에 대한 존중이 아니었다면 나는 확실히 좀 실례했다.어떤 사람들은 es6가 그렇게 복잡한 유형의 실현 방식을 기억할 필요가 없다고 말한다.나는 이런 견해에 편향되어 있다. 프로토타입 단어는 정말 너무 길고 유형의 실현 방식은 은밀하여 이해하기 어렵다.

예제

/*
* class    
* className     
* constructor          constructor
* name     class     
* sayName     prototype      
*/

class className {
  constructor(name){
    this.name = name;
  }
  sayName(){
    console.log(this.name);
  }
}

왜 클라스 방법을 써요?

  • 변수 상승이 없음,class 성명은let 성명과 유사
  • 함수 내부의 방법 내부에서strict mode
  • 자동 사용
  • 에 정의된 모든 방법은 일일이 열거할 수 없다
  • 모든 방법은 내부에 내부가 있는 [[[Construct]] 방법이 있고 new가 호출되면 오류가 발생
  • class 내부에서class 이름을 다시 쓰려고 하면 오류가 발생
  • 사용법


    클래스는 매개 변수로 함수 클래스에 전송할 수 있으며 즉시 실행할 수 있습니다
    //    
    let PersonClass1 = class {/*      */};
    //       
    let PersonClass2 = class PersonClass22 {/*      */};
    

    클래스 내부 방법의 설정


    get

    class a {
      get methodName(){
    
      }
    }
    

    set

    class a {
      set methodName(){
        
      }
    }
    

    생성기 방법

    class a{
      *createIterator(){
        yield 1;
      }
    }
    

    static 정적 방법

    class a {
      static methodName(){
        
      }
    }
    //static       constructor  
    //        ,    ,  this    
    

    메서드 이름은 변수일 수 있습니다.

    
    let method = 'methodName'
    
    let PersonClass = class {
      [method] (){
        //do something
      }
    }
    

    클래스 상속


    예제

    //  extends   
    //   super()      constructor
    //      constructor(),        super()
    class Child extends Parent{
    // constructor
    }
    //       
    class Child extends Parend{
      constructor(args){
        super(...args);
      }
    }
    

    super()

  • 상속 관계의 하위 클래스에서만 슈퍼()
  • 사용 가능
  • super()를 호출하여this
  • 를 초기화해야 합니다
  • 슈퍼 ()를 호출하지 않는 유일한 것은class의constructor ()에서 대상을 되돌려주는 것입니다
  • 비고

  • 자류에서 부류를 차단할 수 있는 방법
  • 정적 방법 계승
  • ES5 쓰기 클래스에서 계승할 수 있으며 부류에 [[Constructor]와prototype
  • 만 있으면
  • 내장 대상에서 상속 가능
  • Symbol.species 속성


    기본 제공 객체에서 상속되며, 하위 클래스는 상위 클래스를 사용하는 모든 방법을 사용하여 하위 클래스의 인스턴스 아래의 기본 제공 객체 중 Symbol을 반환합니다.species
  • Array
  • ArrayBuffer
  • Map
  • Promise
  • RegExp
  • Set
  • Typed arrays

  • new.target


    클래스의 constructor에서만 사용할 수 있습니다.계승할 때, 하위 클래스는 부모 클래스, new.target은 부모 클래스 이름과 같지 않습니다.이 성질을 통해 다른 방법이 이 종류를 계승하는 것을 막을 수 있다.

    좋은 웹페이지 즐겨찾기