"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > ES6 클래스를 사용하여 기능을 확장하고 인스턴스 데이터에 액세스하려면 어떻게 해야 합니까?

ES6 클래스를 사용하여 기능을 확장하고 인스턴스 데이터에 액세스하려면 어떻게 해야 합니까?

2024년 11월 12일에 게시됨
검색:517

How can ES6 Classes be Used to Extend Functions and Access Instance Data?

ES6 클래스로 함수 확장

ES6에서는 특수 객체를 확장하여 함수 객체로부터 상속이 가능합니다. 이러한 객체를 함수로 호출하는 것은 가능하지만 이 호출에 대한 논리를 구현하는 것은 어려울 수 있습니다.

함수 호출에 인스턴스 데이터 전달

클래스를 함수로 호출하는 경우 , 이는 창 개체를 나타냅니다. 인스턴스 데이터에 액세스하려면 두 가지 접근 방식을 사용할 수 있습니다.

  1. 하드코딩: 슈퍼 호출이 인스턴스 데이터가 포함된 코드 문자열을 예상하도록 강제합니다.
class Smth extends Function {
  constructor(x) {
    super("return "   JSON.stringify(x)   ";");
  }
}
  1. 클로저 사용: 인스턴스 변수에 액세스하는 클로저 함수를 반환합니다.
class Smth extends Function {
  constructor(x) {
    function smth() { return x; };
    Object.setPrototypeOf(smth, Smth.prototype);
    return smth;
  }
}

함수 확장 추상화

보다 일반화된 접근 방식은 확장을 처리하는 ExtensibleFunction 클래스를 만드는 것입니다.

class ExtensibleFunction extends Function {
  constructor(f) {
    return Object.setPrototypeOf(f, new.target.prototype);
  }
}

이 클래스는 특정 클래스를 확장하는 데 사용할 수 있습니다.

class Smth extends ExtensibleFunction {
  constructor(x) {
    super(() => { return x; }); // closure
  }
}

요약하자면, ES6 클래스로 Function을 확장하면 호출 로직을 맞춤설정하는 동시에 함수의 동작을 상속받을 수 있습니다. 확장 함수를 호출할 때 인스턴스 데이터에 대한 액세스를 제공하기 위해 다양한 접근 방식을 사용할 수 있습니다.

릴리스 선언문 이 글은 1729462035에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3