상속 소개
JS의 상속은 매우 복잡한 주제이며 다른 객체 지향 언어의 상속보다 훨씬 복잡합니다. 대부분의 다른 객체 지향 언어에서 클래스를 상속하려면 하나의 키워드 만 필요합니다. JS의 공공 회원을 상속하는 목적을 달성하려면 일련의 조치를 취해야합니다. JS는 프로토 타입 상속입니다. 이러한 유연성 덕분에 표준 클래스 기반 상속 또는 더 미묘한 프로토 타입 상속을 사용할 수 있습니다. JS에서는 모든 상속이 프로토 타입을 통해 수행되며 JS는 객체에 따라 상속됩니다.
상속 :
기능 동물 (이름) {this.name = 이름; this.howname = function () {alert (this.name); }} 함수 cat (name) {동물성 (this, name); } var cat = 새로운 고양이 ( "검은 고양이"); cat.howname ();Animal.call (this) 은이 물체 대신 동물 대상을 사용하는 것을 의미합니다. 그렇다면 고양이에 동물의 모든 특성과 방법이 없습니까? CAT 물체는 동물 방법과 특성을 직접 호출 할 수 있습니다.
다중 상속 :
함수 class10 () {this.showsub = function (a, b) {alert (ab); }} 함수 class11 () {this.showadd = function (a, b) {alert (a+b); }} 함수 class2 () {class10.call (this); 클래스 11.call (this); }두 번의 호출을 사용하여 여러 상속을 달성하는 것은 매우 간단합니다.
물론, 프로토 타입 체인 사용과 같은 JS를 상속하는 다른 방법이 있으며,이 기사의 범위에 속하지 않고 여기에서 통화 사용 만 설명합니다. 전화에 대해 말하면 물론 적용됩니다. 이 두 가지 방법은 기본적으로 같은 것을 의미합니다. 차이점은 호출의 두 번째 매개 변수는 모든 유형 일 수 있고, 두 번째 매개 변수는 배열 또는 인수 여야한다는 것입니다.
다음은 JavaScript에서 간단한 상속을 구현하는 방법에 대한 설명입니다.
다음 예제는 사람의 프로토 타입 프로토 타입의 모든 속성을 물려받는 직원 클래스 직원을 만듭니다.
기능 직원 (이름, 성별, EmployeeId) {this.name = name; this.sex = sex; this.employeeid = orployeeid;} // 직원 인스턴스를 Person의 인스턴스로 가리 킵니다. 개인 인스턴스는 개인 프로토 타입에서 메소드를 호출 할 수 있기 때문에 직원 사례는 개인의 프로토 타입에서 모든 속성을 호출 할 수 있습니다. Employee.prototype = new Person (); employee.prototype.getemployeeid = function () {return this.employeeid;}; var Zhang = 새로운 직원 ( "zhangsan", "man", ""); console.log (zhang.getname ()); // "Zhangsan위의 상속 구현은 거칠고 많은 문제가 있습니다.
직원 생성자 및 프로토 타입 (이하 클래스라고 함)을 만들 때 사람이 인스턴스화됩니다.
직원의 생성자는 부모 클래스 담당자의 생성자를 호출 할 수 없으므로 직원 생성자에 이름과 성 속성이 반복적으로 할당됩니다.
직원의 함수는 과부하 메커니즘없이 동일한 이름의 기능을 직접 재정의합니다 (이전의 경우 동일한 유형 문제).
JavaScript 클래스를 생성하기위한 구문은 너무 흩어져 있으며 C#/Java의 구문만큼 우아하지 않습니다.
구현에서 생성자 속성을 가리키는 데 오류가 있습니다.