Maison >interface Web >js tutoriel >Analyse de l'utilisation de l'héritage du constructeur qui peut être utilisée dans les compétences js package_javascript

Analyse de l'utilisation de l'héritage du constructeur qui peut être utilisée dans les compétences js package_javascript

WBOY
WBOYoriginal
2016-05-16 16:17:331100parcourir

Les exemples de cet article décrivent l'utilisation de l'héritage de constructeur qui peut être utilisé dans l'encapsulation js. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

Jetons d'abord un coup d'oeil au code suivant

Méthodes utilisées par la bibliothèque (YUI) :

Copier le code Le code est le suivant :
function extend(Enfant, Parent) {

 var F = fonction(){};
  F.prototype = Parent.prototype;
  Child.prototype = new F();
​Child.prototype.constructor = Enfant;
  Enfant.uber = Parent.prototype;
>

Il existe également une méthode d'héritage de copie, attribut copie :

Cette méthode est différente de la précédente. L'extension du prototype de l'enfant étant terminée, il n'est pas nécessaire de réinitialiser la propriété child.prototype.constructor car elle ne sera plus écrasée.

Par rapport à la méthode précédente, cette méthode est évidemment légèrement moins efficace. Car ce qui se fait ici, c'est copier les prototypes des sous-objets un par un. Plutôt qu'une simple requête en chaîne de prototype.

Cette méthode n'est applicable qu'aux objets contenant uniquement des types de données de base. Tous les types d'objets, y compris les fonctions et les tableaux, ne sont pas copiables et prennent uniquement en charge le passage de références.

Copier le code Le code est le suivant :
fonction extend2(Enfant, Parent) {
  var p = Parent.prototype;
  var c = Enfant.prototype;
  pour (var i dans p) {
   c[i] = p[i];
   }
  c.uber = p;
>

var Forme = fonction(){}
var TwoDShape = fonction(){}
Shape.prototype.name = 'forme';
Shape.prototype.toString = function(){
renvoie this.name;
>
extend2(TwoDShape,Forme);
var t = new TwoDShape();
t.nom
//-->"forme"
t.toString();
//-->"forme"
TwoDShape.prototype.name = 'TwoDShape';
t.nom
//-->"Forme 2D"
t.toString();
//-->"Forme 2D"

TwoDShape.prototype.toString === Shape.prototype.toString
//-->vrai
TwoDShape.prototype.name === Shape.prototype.name
//-->faux

J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.

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