super의 사용법: 1. super가 함수로 사용될 때, 구문은 "constructor(){super();}"입니다. 객체는 일반 메서드에서 가리키는 데 사용됩니다. 부모 클래스의 프로토타입 개체는 정적 메서드에서 부모 클래스를 가리키는 데 사용됩니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, ECMAScript 버전 6.0, Dell G3 컴퓨터.
첫 번째 경우: super가 함수로 사용되면 상위 클래스의 생성자를 나타냅니다.
ES6에서는 하위 클래스의 생성자가 super 함수를 한 번 실행해야 합니다.
class A {} class B extends A { constructor() { super();//子类的构造函数,必须执行一次super函数,代表父类的构造函数 } }
참고: super는 상위 클래스의 생성자를 나타내지만 이때 반환되는 것은 B의 인스턴스입니다. 즉, 내부 super는 B의 인스턴스를 참조하므로 super()는 A.prototype과 동일합니다. .constructor.call(this)
class A { constructor() { console.log(new.target.name); } } class B extends A { constructor() { super(); } } new A() // A new B() // B
위 코드에서 new.target은 현재 실행 중인 함수를 가리키며, super()가 실행되면 상위 클래스 A의 생성자가 아닌 하위 클래스 B의 생성자를 가리킵니다. 즉, super() 내부의 함수는 B를 가리킵니다
super가 함수로 사용될 때 하위 클래스의 생성자에 나타나야 합니다. 그렇지 않으면 오류가 보고됩니다
class A {} class B extends A { m() { super(); // 报错 } }
두 번째 경우: super가 사용될 때 객체로서 일반 메소드에서는 상위 클래스의 프로토타입 객체를 가리키고, 정적 메소드에서는 상위 클래스를 가리킵니다
class A { p() { return 2; } } class B extends A { constructor() { super();//父类的构造函数 console.log(super.p()); // 2 } } let b = new B();
위 코드에서 super를 함수로 사용하면 다음을 나타냅니다. 상위 클래스의 생성 방법. 객체로 사용되면 상위 클래스의 프로토타입 객체, 즉 A.prototype을 가리키므로 super.p()는 A.prototype.p()
와 동일합니다. super는 상위 클래스의 프로토타입을 가리키므로 상위 클래스 인스턴스의 속성이나 메서드는 super
class A { constructor() { this.p = 2; } } class B extends A { get m() { return super.p; } } let b = new B(); b.m // undefined
를 통해 호출할 수 없습니다. 위 코드에서 p는 상위 클래스 인스턴스의 속성입니다. A는 super.p에서 참조할 수 없습니다
속성이 상위 클래스의 프로토타입에 정의되어 있으면 super
class A {} A.prototype.x = 2; class B extends A { constructor() { super(); console.log(super.x) // 2 } } let b = new B();
위 코드에서 x 속성은 상위 클래스 객체의 프로토타입에 정의되어 있습니다. 그래서 당신은 슈퍼를 사용할 수 있습니다.
위 내용은 es6에서 super의 사용법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!