"new.target"이라는 용어는 ECMAScript 2015 사양(14.2.3 및 14.2.16)에 드물게 나타납니다. 그 목적에 대한 질문을 제기합니다. 흥미롭게도 전체 이름은 §12.3.8에 있는 NewTarget입니다.
NewTarget은 현재 데이터베이스 내에서 [[NewTarget]]의 현재 값을 검색하는 메타 속성입니다. 화살표가 아닌 함수 환경. 함수가 호출되면 this 바인딩과 유사하게 [[NewTarget]] 값이 할당됩니다.
이전에는 함수가 생성자로 호출되었는지 감지하는 것이 불가능했습니다. 명시적으로 지원됩니다. 그러나 NewTarget은 [[Construct]] 내부 메서드가 환경 레코드를 생성했는지 여부를 공개하여 이 문제를 해결합니다. §8.1.1.3에 따르면 환경 레코드가 [[Construct]]에 의해 생성된 경우 [[NewTarget]]은 [[Construct]] newTarget 매개변수의 값을 보유합니다. 그렇지 않으면 정의되지 않은 상태로 유지됩니다.
ES6 클래스는 문법적으로는 진정한 상속을 제공합니다. 여기서 NewTarget이 중요한 역할을 합니다. new X를 사용하여 클래스 생성자를 호출하면 처음에는 this 값이 설정되지 않습니다. 생성자 내의 super() 호출은 객체를 생성하지만 원래 호출된 생성자의 .prototype에서 상속됩니다.
NewTarget은 새 호출을 수신한 가장 바깥쪽 생성자를 캡처합니다. 현재 실행 중인 생성자가 아닙니다. 이 값은 OrdinaryCreateFromConstructor 프로시저에 전달되어 인스턴스가 원하는 프로토타입에서 올바르게 상속되도록 보장합니다.
설명하려면 다음 클래스를 고려하세요.
이 예에서 NewTarget을 사용하면 Parent 클래스가 Child 클래스를 통해 생성자로 호출되었음을 인식할 수 있습니다. 그런 다음 Child 클래스는 super() 호출 중에 이 정보를 활용하여 상속을 적절하게 설정합니다.
위 내용은 `new.target`은 ES6 클래스의 상속을 이해하는 데 어떻게 도움이 됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!