말할 것도없이,이 방법은 상대적으로 이해하기 쉽고, 하위 클래스에서 상위 클래스의 생성자를 호출합니다. 또한이 방법의 가장 큰 장점 중 하나는 상속을 구성하면 다중 상속을 달성 할 수 있다는 것입니다. 이 코드 검토 :
코드 사본은 다음과 같습니다.
기능 a ()
{}
기능 b ()
{}
함수 c ()
{
this.father = a;
this.father ();
이것을 삭제하십시오.
this.father = b;
this.father ();
이것을 삭제하십시오.
}
그러나이 방법은 이것과 그 단점이 있습니다.
객체 지향에 익숙하다면이 C# 코드를 살펴 보겠습니다.
코드 사본은 다음과 같습니다.
클래스 프로그램
{
staticVoid main (String [] args)
{
B B = NEWB ();
bool temp = (typeof (a)). isinstanceoftype (b);
Console.WriteLine (Temp);
}
}
Classa
{
공개 a ()
{
}
}
클래스 B : a
{
공개 b ()
{
}
}
결과는 무엇입니까? B는 물론 A의 예입니다.
그러나 우리는 구성을 사용하여 상속 된 JavaScript 코드의 위 섹션 에서이 테스트를 수행합니다.
코드 사본은 다음과 같습니다.
기능 a ()
{}
기능 b ()
{}
함수 c ()
{
this.father = a;
this.father ();
이것을 삭제하십시오.
this.father = b;
this.father ();
이것을 삭제하십시오.
}
var c = 새로운 c ();
경고 (C 인스턴스 a);
그러나 결과는 우리가 상상 한 것이 아닙니다.
실제로, 그것은 설명하기 쉽다 : 구성된 상속은 부모 클래스의 구성 방법을 호출하여 복사 한 부모 클래스의 속성 일뿐입니다. 다른 검색은 수행되지 않았으므로 많은 재료 가이 상속 방법 상속이라고 부르지 않습니다.
단점을 보면서 장점을 기억하십시오. 더 많은 상속을 지원하십시오.
C#의 상속을 살펴보면이 상속과 가장 전형적인 차이점이 있음을 발견했습니다. C#은 다중 상속을 지원하지 않으며 위에서 언급 한 건설적인 상속의 단점이 있습니다. 그래서 새로운 상속 방법이 만들어졌고 우리는 프로토 타입 상속이되었습니다.
이름을 볼 때 프로토 타입 상속이 프로토 타입의 특성을 사용하여 상속을 달성하는 것임을 대략 이해할 수 있습니다. 이것은 JavaScript에서 가장 인기있는 상속 방식입니다. 프로토 타입을 이해하지 못하면 "프로토 타입으로 연주"라는 다른 기사에주의를 기울이십시오.
먼저 코드를 살펴 보겠습니다. 여기서 나는 "JavaScript의 왕의 귀환"에서 코드를 작성하겠습니다.
코드 사본은 다음과 같습니다.
기능 지점 (차원)
{
this.dimensional = 치수;
this.test = function () {
경고 ( "성공");
}
}
기능 point2d (x, y)
{
this.x = x;
this.y = y;
}
point2d.prototype = 새로운 포인트 (2);
var p = new Point2d (3,4);
p.test ();
테스트가 통과되었습니다. 이것은 Point2D가 상위 클래스 방법을 물려받은 다음 인스턴스를 살펴 봤음을 보여줍니다.
경고 (p 인스턴스 포인트);
성공! 자, 프로토 타입 상속을 분석하겠습니다.
프로토 타입 상속의 장점에 대해서는 이야기하지 않을 것입니다. 구조는 간단하고 이해하기 쉽고 발전 할 수 있습니다. 그러나 그의 결점도 중요합니다. 동물, 사람, 소녀에 대한 나의 이전 예를 기억하십니까? 우리는 프로토 타입 상속을 사용하여 다음을 구현합니다.
코드 사본은 다음과 같습니다.
기능 동물 ()
{
this.run = function () {alert ( "i can run");};
}
기능인 (이름)
{
this.say = function () {alert ( "내 이름은"+this.name);}
}
people.prototype = 새로운 동물 ();
기능 소녀 (이름, 나이)
{
this.age = age;
this.introading = function () {alert ( "내 이름은"+this.name+"입니다. 나는"+this.age);};
}
girl.prototype = 새로운 사람들 (???);
내 빨간색 대담한 부분의 코드 라인에주의를 기울이십시오. 사람들은 소녀의 프로토 타입입니다. 따라서 사람들을 초기화 할 때 이름 매개 변수를 전달해야하지만 각 소녀의 이름은 다르므로 프로토 타입 상속을 사용하지 않습니다. 프로토 타입 상속 단계에서는 부모 클래스 객체를 초기화하는 데 사용할 매개 변수를 결정할 수 없습니다. 경우 2 : 매우 간단합니다. 각 클래스에는 하나의 프로토 타입 만 가질 수 있으므로 프로토 타입 상속은 여러 상속에 사용할 수 없습니다. 이것은 좋은 것과 나쁜 것입니다. 왜냐하면:
Java 및 C#과 같은 객체 지향 언어에서는 다중 상속이 지원되지 않으며 여러 상속은 객체 지향과 호환되지 않는 것으로 여겨집니다.
여러 인터페이스를 구현할 수 없습니다!
좋아요, 그게 제가 오늘 쓴 전부입니다. 요약하자면, 프로토 타입 상속은 구성 상속의 몇 가지 문제를 해결하고 새로운 문제를 소개합니다. 전반적으로, 프로토 타입 상속은 가장 널리 사용되는 상속 방법이며, 또한 JavaScript 문법의 상속을 진정으로 구현하는 방법이기도합니다!