실제 프로젝트에서는 일반적으로 생성자를 사용하여 객체를 만들고 보통 사용 방법을 프로토 타입 객체에 추가합니다. 마지막으로, 객체를 직접 인스턴스화하거나 부모 클래스로 사용하고, 객체를 선언하고, 상위 클래스를 상속하십시오.
상속하는 두 가지 일반적인 방법이 있습니다
코드 사본은 다음과 같습니다.
// 프리미엄 클래스
기능인 (이름) {
this.name = 이름;
};
// 서브 클래스
기능 학생 (섹스) {
Person.Apply (이, 인수);
this.sex = 섹스;
};
1. 프로토 타입 상속 :
코드 사본은 다음과 같습니다.
학생. prototype = person.prototype; //이 문장을 실행할 때 학생. person.prototype.constructor가 사람을 가리키기 때문에 객체의 할당은 본질적으로 참조 할당이므로 Student.prototype.constructor도 사람을 가리 킵니다.
학생 .prototype.constructor = 학생;
개인의 프로토 타입 객체를 사용하여 학생의 프로토 타입 객체를 덮어 씁니다. 앞에서 언급 한 바와 같이 객체의 할당은 본질적으로 참조 할당이므로 학생에 대한 수정이 있으면 직원에 반영됩니다. .
다음을보십시오.
코드 사본은 다음과 같습니다.
Student.prototype.add = function () {alert ( "add")};
person.prototype.add (); // popt add
2. 상속 예 :
코드 사본은 다음과 같습니다.
학생. prototype ();
2 Student.prototype.constructor = 학생;
개인의 인스턴스를 사용하여 학생의 프로토 타입 객체를 덮어 씁니다. 이전과 비교하여 인스턴스를 생성합니다. 이는 기억 낭비이지만, 위의 방법, 즉 학생에 대한 수정 사항을 해결합니다. Person.prototype에 반영되지 않습니다. 즉, 서브 클래스는 상위 클래스에 영향을 미치지 않습니다.
3. 제어 객체를 사용하여 1과 2의 장점을 결합하여 단점을 제거하십시오.
코드 사본은 다음과 같습니다.
var f = function () {};
f. prototype = person.prototype;
학생 .prototype = new f ();
학생 .prototype.constructor = 학생;
F는 위의 일부 프로토 타입 방법 만있는 빈 객체이며, 이는 인스턴스화 할 때 메모리를 덜 소비하고 부모 클래스에 대한 서브 클래스의 영향을 분리합니다.