Maison > interface Web > js tutoriel > le corps du texte

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

php中世界最好的语言
Libérer: 2018-04-23 10:43:38
original
1803 Les gens l'ont consulté

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);
Copier après la connexion

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());
Copier après la connexion

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()); //李四
Copier après la connexion

À 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();
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal