Maison  >  Article  >  interface Web  >  Méthode minimaliste pour compléter l'encapsulation et l'héritage JavaScript

Méthode minimaliste pour compléter l'encapsulation et l'héritage JavaScript

小云云
小云云original
2017-11-30 09:25:361428parcourir

Dans cet article, nous allons parler d'une connaissance relativement nouvelle pour les débutants : l'écriture de cours JavaScript en utilisant la méthode minimaliste. L'« approche minimaliste » est l'œuvre du programmeur néerlandais Gabor de Proposée par Mooij, cette méthode n'utilise pas de prototype, et le code est très simple à déployer. C'est probablement pour cela qu'on l'appelle la « méthode minimaliste ». Ce qui suit présentera comment utiliser la méthode minimaliste pour compléter l'encapsulation et l'héritage JavaScript. J'espère que cela sera utile à tout le monde.

1. Encapsulation

Premièrement, il utilise également un objet pour simuler une "classe". Dans cette classe, définissez un constructeur createNew() pour générer des instances.

var Cat = {
    createNew: function(){
      // some code here
    }
};


Ensuite, dans createNew(), définissez un objet instance et utilisez cet objet instance comme valeur de retour.

var Cat = {
     createNew: function(){
       var cat = {};
       cat.name = "大毛";
       cat.makeSound = function(){ alert("喵喵喵"); };
       return cat;
     }
 };

Lorsque vous utilisez

, appelez la méthode createNew() pour obtenir l'objet instance.

var cat1 = Cat.createNew();
cat1.makeSound(); // 喵喵喵


L'avantage de cette méthode est qu'elle est facile à comprendre, a une structure claire et élégante et est conforme à la construction traditionnelle de « programmation orientée objet » , de sorte que les caractéristiques suivantes peuvent être facilement déployées.

2. Héritage

Laissez une classe hériter d'une autre classe, ce qui est très pratique à implémenter. Appelez simplement la méthode createNew() de ce dernier dans la méthode createNew() du premier.
Définissez d’abord une classe Animal :

var Animal = {
    createNew: function(){
      var animal = {};
      animal.sleep = function(){ alert("睡懒觉"); };
      return animal;
    }
};


Ensuite, dans la méthode createNew() de Cat, appelez la méthode createNew() d’Animal

var Cat = {
     createNew: function(){
       var cat = Animal.createNew();
       cat.name = "大毛";
       cat.makeSound = function(){ alert("喵喵喵"); };
       return cat;
     }
 };


L'instance Cat obtenue de cette manière héritera de la classe Animal.

var cat1 = Cat.createNew();
cat1.sleep(); // 睡懒觉


3. Propriétés privées et méthodes privées

Dans la méthode createNew(), tant que ce n'est pas le cas. défini dans l'objet cat. Les méthodes et propriétés sont toutes privées.

var Cat = {
    createNew: function(){
      var cat = {};
      var sound = "喵喵喵";//私有属性
      cat.makeSound = function(){ 
     alert(sound); 
    };
      return cat;
    }
};


La variable interne sound dans l'exemple ci-dessus ne peut pas être lue en externe et ne peut être lue que via la méthode publique makeSound() de cat .

var cat1 = Cat.createNew();
alert(cat1.sound); // undefined


4. Partage de données

Parfois, nous avons besoin que tous les objets d'instance puissent lire et écrire de la même manière. données internes. Pour le moment, encapsulez simplement les données internes à l’intérieur de l’objet de classe et à l’extérieur de la méthode createNew().

var Cat = {
    sound : "喵喵喵",
    createNew: function(){
      var cat = {};
      cat.makeSound = function(){ alert(Cat.sound); };
      cat.changeSound = function(x){ Cat.sound = x; };
      return cat;
    }
};


Ensuite, générez deux objets instances :

var cat1 = Cat.createNew();
var cat2 = Cat.createNew();
cat1.makeSound(); // 喵喵喵


À ce stade, si un objet instance modifie les données partagées, l'autre objet instance sera également affecté.

cat2.changeSound("啦啦啦");
cat1.makeSound(); // 啦啦啦

Le minimalisme est beau, mais il présente également des inconvénients. Tout d'abord, instanceof ne peut pas être utilisé pour déterminer la classe à laquelle appartient un objet, "cat1 instanceof. Cat" ne peut pas passer. De plus, bien que le minimalisme élimine les inconvénients de l'utilisation de la chaîne de prototypes (les propriétés ne peuvent pas être privées, la création et l'héritage d'objets ne sont pas intuitifs), il expose également les inconvénients de ne pas utiliser la chaîne de prototypes : à chaque fois qu'un instance est générée, elle doit Pour le contenu répété, il occupera plus de mémoire

Le contenu ci-dessus concerne la méthode minimaliste d'écriture de JavaScript. J'espère qu'il sera utile au travail de chacun

. Recommandations associées :

JavaScript orienté objet (approche minimaliste)_js orienté objet

Méthodes de gestion des exceptions JavaScript

Simulation JavaScript Trois façons d'implémenter l'encapsulation et leurs différences

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