JavaScript는 상속 된 키워드를 제공하지 않지만 여전히 키워드를 구현할 수있는 몇 가지 좋은 방법을 제시 할 수 있습니다.
1. 프로토 타입 체인 상속 :
코드 사본은 다음과 같습니다.
var base = function ()
{
this.level = 1;
this.name = "base";
this.tostring = function () {
"베이스"를 반환합니다.
};
};
base.constant = "상수";
var sub = function ()
{
};
sub.prototype = new Base ();
sub.prototype.name = "sub";
장점 : 키워드의 인스턴스에서 판단하면 인스턴스는 부모 클래스의 인스턴스와 아동 클래스의 인스턴스이며 가장 순수한 상속 인 것 같습니다.
단점 : 서브 클래스는 부모 클래스의 속성 및 방법과 다릅니다. sub.prototype = new base ()와 같은 문서 후에 별도로 실행해야합니다. 그리고 서브 생성자로 감을 수 없습니다. 예 : sub.prototype.name = "sub"; 다중 상속을 달성 할 수 없습니다.
2. 상속 구성 :
코드 사본은 다음과 같습니다.
var base = function ()
{
this.level = 1;
this.name = "base";
this.tostring = function () {
"베이스"를 반환합니다.
};
};
base.constant = "상수";
var sub = function ()
{
base.call (this);
this.name = "sub";
};
장점 : 다중 상속을 구현할 수 있으며, 서브 클래스에 고유 한 속성을 생성자 내부에 설정할 수 있습니다.
단점 : 인스턴스를 사용하면 객체가 상위 클래스의 인스턴스가 아님을 발견했습니다.
3. 인스턴스 상속 :
코드 사본은 다음과 같습니다.
var base = function ()
{
this.level = 1;
this.name = "base";
this.tostring = function () {
"베이스"를 반환합니다.
};
};
base.constant = "상수";
var sub = function ()
{
var instance = new Base ();
instance.name = "sub";
반환 인스턴스;
};
장점 : 부모 클래스의 객체이며, 새로운 객체를 구성하고 새로운 객체를 구성하지 않고도 새로운 사용을 사용하여 동일한 효과를 얻을 수 있습니다.
단점 : 생성 된 객체는 본질적으로 서브 클래스 객체가 아닌 부모 클래스의 인스턴스입니다. 다중 상속은 지원되지 않습니다.
4. 상속 복사 :
코드 사본은 다음과 같습니다.
var base = function ()
{
this.level = 1;
this.name = "base";
this.tostring = function () {
"베이스"를 반환합니다.
};
};
base.constant = "상수";
var sub = function ()
{
var base = new Base ();
for (var i in base)
sub.prototype [i] = base [i];
sub.prototype [ "name"] = "sub";
};
장점 : 다중 상속을 지원합니다.
단점 : 낮은 효율; 부모 클래스에서 열거 할 수없는 방법을 얻을 수 없습니다.
이 양식에는 고유 한 특성이 있으며, 내가 제공하는 코드 측면에서만 다음 표를 만족시킵니다.
2012-1-10 : 클래스 상속이 필요하지 않으면 객체 상속 만 필요합니다. ECMAScript 5를 지원하는 브라우저의 경우 객체를 사용할 수도 있습니다.
코드 사본은 다음과 같습니다.
var base = function ()
{
this.level = 1;
this.name = "base";
this.tostring = function () {
"베이스"를 반환합니다.
};
};
base.constant = "상수";
var sub = object.create (new base ());
sub.name = "sub";