Maison  >  Article  >  interface Web  >  Explication détaillée des méthodes orientées objet et des avantages et inconvénients de la création d'objets en JavaScript

Explication détaillée des méthodes orientées objet et des avantages et inconvénients de la création d'objets en JavaScript

伊谢尔伦
伊谢尔伦original
2017-07-26 10:48:111369parcourir

Points de connaissance :
(1) Bases orientées objet JS : ECMA-262 définit un objet comme : "Une collection d'attributs non ordonnés, dont les attributs peuvent contenir des valeurs de base, des objets ou des fonctions."
(2) Méthodes de création d'objets en JS :
(a) Modèle d'usine : utilisez des fonctions pour encapsuler les détails de la création d'objets avec une interface spécifique.  

 function createPerson(name, age, job){ 
          var o = new Object(); 
          o.name = name; 
          o.age = age; 
          o.job = job; 
          o.sayName = function(){ 
          alert(this.name); 
          }; 
      return o; 
      } 
    var person1 = createPerson(“Nicholas”, 29, “Software Engineer”); 
    var person2 = createPerson(“Greg”, 27, “Doctor”);

Inconvénients : Bien que le modèle d'usine résolve le problème de la création de plusieurs objets familiers, il ne résout pas le problème de la reconnaissance des objets (c'est-à-dire comment connaître le type d'un objet).
  (b) Modèle de constructeur : les constructeurs dans ECMAScript peuvent être utilisés pour créer des objets de types spécifiques. Vous pouvez créer des constructeurs personnalisés pour définir les propriétés et les méthodes des types d'objets personnalisés.  

 function Person(name, age, job){ 
        this.name = name; 
        this.age = age; 
        this.job = job; 
        this.sayName = function(){ 
        alert(this.name); 
        }; 
      } 
      var person1 = new Person(“Nicholas”, 29, “Software Engineer”); 
      var person2 = new Person(“Greg”, 27, “Doctor”);

  Inconvénients : Le principal problème avec l'utilisation des constructeurs est que chaque méthode doit être recréée sur chaque instance. N'oubliez pas que les fonctions dans ECMAScript sont des objets, donc chaque fois que vous définissez une fonction,
, vous instanciez un objet.
 (c) Modèle de prototype : chaque fonction que nous créons a un attribut de prototype, qui est un pointeur pointant vers un objet, et le but de cet objet est de contenir tous les objets qui peuvent être représentés par un type spécifique
Propriétés et méthodes partagées par les instances. L'avantage d'utiliser un objet prototype est que tous les objets peuvent partager les propriétés et les méthodes qu'il contient. Inconvénients : Toutes les propriétés du prototype sont partagées par de nombreuses instances. Ce type de partage est très adapté aux fonctions. Mais pour les propriétés avec des valeurs de type référence, le problème est plus important.

 (d) Utilisation combinée du modèle de constructeur et du modèle de prototype : la manière la plus courante de créer un type personnalisé consiste à utiliser l'utilisation combinée du modèle de constructeur et du modèle de prototype. Le modèle de constructeur est utilisé pour définir les propriétés de l'instance, tandis que le modèle de prototype est utilisé pour définir les méthodes et les propriétés partagées. ​
  function Person(){ 
      } 
      Person.prototype.name = “Nicholas”; 
      Person.prototype.age = 29; 
      Person.prototype.job = “Software Engineer”; 
      Person.prototype.sayName = function(){ 
        alert(this.name); 
      }; 
      var person1 = new Person(); 
      person1.sayName(); //”Nicholas” 
      var person2 = new Person(); 
      person2.sayName(); //”Nicholas” 
      alert(person1.sayName == person2.sayName); //true

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