JavaScript의 다중 상속 예제에 대한 자세한 설명

小云云
풀어 주다: 2018-01-11 09:19:57
원래의
1629명이 탐색했습니다.

이 글은 주로 자바스크립트에서 다중 상속을 구현하는 방법을 소개하며, 자바스크립트에서 다중 상속을 구현하는 구체적인 단계와 관련 운영 기법을 예제 형식으로 자세히 분석하여 도움이 될 수 있기를 바랍니다. 모든 사람.

1. 빈 부모 클래스 생성자를 정의한 다음 프로토타입을 통해 부모 클래스에 대한 속성과 메서드를 정의합니다.

2. 빈 하위 클래스 생성자를 정의한 다음 해당 클래스의 인스턴스에 하위 클래스의 프로토타입을 바인딩합니다. 하위 클래스 프로토타입의 상위 클래스도 상위 클래스의 인스턴스에 바인딩됩니다. 프로토타입을 통해 하위 클래스에 대한 고유한 속성과 메서드를 설정합니다.

3. 빈 손자 클래스 생성자를 정의한 다음 손자 클래스의 프로토타입을 하위 클래스 인스턴스에 바인딩한 다음 손자 클래스 프로토타입의 상위 클래스를 하위 클래스 인스턴스에 바인딩합니다. 프로토타입을 통해 손자 클래스에 대한 고유한 속성과 메서드를 정의합니다.

4. 손자 객체를 인스턴스화합니다. 이 문서의 하위 클래스인 손자 부모 클래스의 메서드를 호출할 수도 있고, 가장 큰 부모 클래스를 직접 호출할 수도 있습니다. 여기서는 상위 클래스입니다. 현재 개체에 속성과 메서드를 추가할 수도 있습니다.


function Person(){}
Person.prototype.name = "人";// 为人类创建一个name属性
Person.prototype.say = function(content){// 为人类创建一个说话的方法
  if(!this.name){ // 如果对象不存在name属性,则使用原型链的name
    this.name = this.__proto__.name;
  }
  console.log("我是" + this.name + ",我想说"+content);
};
function Parent(){}
Parent.prototype = new Person();  // 设置Parent类继承Person类
Parent.prototype.superClass = new Person();// 设置superClass保存父类Person的方法属性
Parent.prototype.name = "父辈类";// 设置Parent类的name属性
Parent.prototype.say = function(){// 设置Parent类自己的 say 方法
  console.log("我是Parent类的say方法!");
};
function Child(){}
Child.prototype = new Parent();// 设置Child类继承Parent类
Child.prototype.superClass = new Parent();// 设置superClass保存父类Parent的方法属性
Child.prototype.say = function(){  //设置Child类自己的say方法
  console.log("我是Child类的say方法!");
}
var c = new Child();// 实例化一个Child对象
c.say();  // 调用自身原型的say方法,输出:我是Child类的say方法!
c.superClass.say(); // 调用父类Parent的say方法,输出: 我是Parent类的say方法!
c.superClass.superClass.say("哈哈");// 直接调用最大的父类Person的say方法(方法中的this指向Person),输出:我是人,我想说哈哈"
// 用call调用最大的父类Person的say方法(方法中的this指向实例化对象c,但此时c并没有name属性,所以this.name用的是Parent的name)
c.superClass.superClass.say.call(c,"嘻嘻"); // 输出:我是父辈类,我想说嘻嘻
c.name = "子类实例";// 给当前对象增加name属性
// 还是用call调用最大父类Person的say方法(此时c对象中已经有name属性);
c.superClass.superClass.say.call(c,"我是子类的实例化对象"); // 输出:我是子类实例,我想说我是子类的实例化对象
로그인 후 복사

ps:다중 상속은 프로토타입 객체에 속성을 추가하여 상위 클래스의 객체와 속성을 저장할 수 있습니다. 하위 클래스를 호출할 때 superClass를 사용하여 상위 클래스 메서드를 지정하면 문제가 해결됩니다. . 상위 클래스와 하위 클래스의 메소드는 동일한 이름을 갖습니다. 하위 클래스가 상위 클래스를 상속한 후에는 상위 클래스 메소드를 덮어씁니다.

관련 권장 사항:

Python의 다중 상속에 대한 심층 분석

다중 상속 구현에 대한 권장 기사 10개

PHP 객체 지향 다중 상속 및 인터페이스 사용

위 내용은 JavaScript의 다중 상속 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿