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

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

Linda Hamilton
Linda Hamilton원래의
2024-10-21 06:09:30136검색

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

ES6 클래스로 함수 확장

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

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

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

  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을 확장하면 호출 논리를 사용자 정의하는 동시에 함수의 동작을 상속받을 수 있습니다. 확장 함수를 호출할 때 인스턴스 데이터에 대한 액세스를 제공하기 위해 다양한 접근 방식을 사용할 수 있습니다.

위 내용은 ES6 클래스를 사용하여 기능을 확장하고 인스턴스 데이터에 액세스하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.