"new.target" 이해
ECMAScript 2015 사양에는 "new.target"이라는 메타 속성이 도입되었습니다. 함수가 호출되었는지 여부를 확인하는 화살표가 아닌 함수 constructor.
정의 및 목적
"new.target"은 첫 번째 메타 속성을 나타내며 사양의 §12.3.8에 공식적으로 정의되어 있습니다. 유일한 목적은 함수의 "[[NewTarget]]" 내부 값의 현재 값을 검색하는 것입니다. 이 값은 "this" 바인딩과 유사하게 함수가 호출될 때 설정됩니다.
§8.1.1.3 함수 환경 레코드에 따르면 "[[NewTarget]]" 값은 "[[ Construct]]" 함수가 생성자로 호출되는 경우 newTarget 매개변수입니다. 그렇지 않으면 해당 값은 정의되지 않은 상태로 유지됩니다.
ES6 클래스의 중요성
"new.target"은 ES6 클래스 구현에서 중요한 역할을 하며, 내장 객체. "new"를 사용하여 클래스 생성자를 호출할 때 "this" 값은 아직 초기화되지 않습니다. 그러나 super() 메소드가 호출되면 객체가 생성되고 "newTarget" 생성자의 ".prototype"을 상속하도록 설정됩니다.
예
다음 예에서는 클래스 상속에서 "new.target"이 어떻게 사용되는지 보여줍니다.
class Parent { constructor() { // Implicit from super() call: new.target = Child // Implicit because Parent doesn't extend anything: // this = Object.create(new.target.prototype) console.log(new.target) // Child! } } class Child extends Parent { constructor() { // this is uninitialized (and would throw if accessed) // Implicit from new call: new.target = Child super() // this = Reflect.construct(Parent, [], new.target) console.log(this) } } new Child
여기서 예:
위 내용은 \"new.target\" 메타 속성은 어떻게 ES6 클래스 상속을 용이하게 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!