Maison  >  Article  >  interface Web  >  Explication détaillée de plusieurs exemples d'héritage en JavaScript

Explication détaillée de plusieurs exemples d'héritage en JavaScript

小云云
小云云original
2018-01-11 09:19:571631parcourir

Cet article présente principalement la méthode d'implémentation de l'héritage multiple en JavaScript. Il analyse en détail les étapes spécifiques et les techniques de fonctionnement associées à l'implémentation de l'héritage multiple en JavaScript sous forme d'exemples. J'espère que les amis dans le besoin pourront s'y référer. peut aider tout le monde.

1. Définissez un constructeur de classe parent vide, puis définissez les propriétés et les méthodes de la classe parent via le prototype

2 Définissez un constructeur de sous-classe vide, puis définissez Le prototype de la sous-classe est. liée à l'instance de la classe parent, puis la classe parent du prototype de la sous-classe est également liée à l'instance de la classe parent. Définissez vos propres propriétés et méthodes pour les sous-classes via le prototype.

3. Définissez un constructeur de classe petit-fils vide, puis liez le prototype de classe petit-fils à l'instance de sous-classe, puis liez la classe parent du prototype de classe petit-fils à l'instance de sous-classe. Définissez vos propres propriétés et méthodes pour la classe petit-enfant via un prototype.

4. Instanciez un objet petit-enfant. En appelant l'objet instance, appelez sa propre méthode. Vous pouvez également appeler la méthode de la classe parent du petit-enfant, c'est-à-dire la sous-classe de cet article, ou vous pouvez appeler directement. la plus grande classe parent, c'est-à-dire que les méthodes de la classe parent ici peuvent également ajouter des propriétés et des méthodes à l'objet actuel.


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 :L'héritage multiple peut ajouter un attribut sur l'objet prototype pour enregistrer les objets et attributs de la classe parent, et appeler le sous-classe Lorsque vous utilisez superClass pour signaler la méthode de la classe parent, cela résout le problème selon lequel la classe parent et la méthode de la classe enfant ont le même nom et la classe enfant écrasera la méthode de la classe parent après avoir hérité de la classe parent.

Recommandations associées :

Analyse approfondie de l'héritage multiple en python

10 articles recommandés sur la mise en œuvre de l'héritage multiple

Héritage multiple orienté objet PHP et utilisation de l'interface

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn