Maison  >  Article  >  interface Web  >  Quelles sont les méthodes pour définir des classes en js

Quelles sont les méthodes pour définir des classes en js

php中世界最好的语言
php中世界最好的语言original
2018-04-23 10:43:381789parcourir

Cette fois, je vais vous expliquer quelles sont les méthodes de définition des classes en js et quelles sont les précautions pour définir les classes en js. Ce qui suit est un cas pratique, jetons un oeil.

ECMAScript6 prend déjà en charge les classes, mais les versions précédentes ne prenaient pas en charge les classes, mais les classes peuvent être simulées via certaines méthodes.

Les cours en js sont à la fois importants et difficiles. Ils semblent souvent ambigus.

Tout d’abord, soulignons trois points de connaissances importants en js : ceci, le prototype et le constructeur.

Résumons plusieurs façons de définir (simuler) des classes :

1.Modèle d'usine

function createObject(name,age){
  var obj = new Object();
  obj.name = name;
  obj.age = age;
  obj.getName = function(){
    return this.name;
  };
  obj.getAge = function(){
    return this.age;
  }
  return obj;
}
var obj2 = createObject("王五",19);
console.log(obj2.getName());
console.log(obj2.getAge());
console.log(obj2.constructor);

Méthode du mode usineCréer un objet. Le mode Usine peut créer un objet contenant les informations nécessaires en fonction des paramètres acceptés. Cette méthode peut être appelée un nombre illimité de fois et renvoie un objet à chaque fois. contenant 2 propriétés et 2 méthodes. Le modèle d'usine résout le problème de la création d'objets similaires, mais il ne résout pas le problème de l'identification des objets, c'est-à-dire qu'il ne peut pas déterminer la catégorie d'un objet et l'unifier en tant qu'objet.

2.ConstructeurMéthode

function Person(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
}
Person.prototype = {
  constructor:Person,
  getName:function(){
    return this.name;
  },
  getAge:function(){
    return this.age;
  },
  getJob:function(){
    return this.job;
  }
}
var p = new Person("二麻子",18,"worker");
console.log(p.constructor);
console.log(p.getName());
console.log(p.getAge());
console.log(p.getJob());

Bien que la méthode constructeur détermine la propriété de l'objet et puisse déterminer le type de l'objet, Cependant, les méthodes du constructeur doivent être recréées dans chaque objet, ce qui entraîne des problèmes de performances.

3.Modèle de prototype

function Person(){
}
Person.prototype = {
  constructor:Person,
  name:"张三",
  age:21,
  job:"teacher",
  getName:function(){
    return this.name;
  },
  getJob:function(){
    return this.job;
  }
}
var p = new Person();
console.log(p.getName()); //张三
console.log(p.getJob()); //teacher
var p2 = new Person();
p2.name = "李四";
console.log(p2.getName()); //李四

À partir de l'exemple de code, nous pouvons savoir que les instances d'objet peuvent accéder aux valeurs dans le prototype, mais la valeur dans le prototype ne peut pas être remplacée. Si un attribut portant le même nom que le prototype est défini dans l'instance d'objet, alors l'attribut masquera l'attribut dans le prototype, mais ne sera pas remplacé.

4. Encapsulation (appelons-le ainsi pour l'instant)

var Dog = {
  createDog:function(){
    var dog = {};
    dog.name = "汪汪";
    dog.sayHello = function(){
      console.log("Hello World!");
    };
    return dog;
  }
};
var dog = Dog.createDog();
dog.sayHello();

Il s'agit d'encapsuler tout le code et de l'utiliser. l'objet d'instance comme renvoie dans son ensemble, quelque peu similaire au mode usine.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée des étapes d'imitation js jquery

Comment comparer les unités de temps dans JS

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