Maison  >  Article  >  interface Web  >  Signification de la chaîne de prototypes javascript

Signification de la chaîne de prototypes javascript

WBOY
WBOYoriginal
2023-05-09 11:21:36485parcourir

JavaScript est un langage très flexible et c'est également un langage basé sur un prototype, ce qui signifie que tous les objets ont un objet prototype, qui peut contenir des propriétés et des méthodes. En JavaScript, tous les objets héritent des propriétés et méthodes de leur prototype.

La chaîne de prototypes est un concept très important et basique en JavaScript. Comprendre la chaîne de prototypes est la clé pour comprendre la programmation orientée objet JavaScript.

La chaîne de prototypes est basée sur l'héritage prototypique, ce qui signifie qu'un objet peut hériter de ses propriétés et méthodes d'un autre objet. En JavaScript, chaque objet possède une propriété interne [[Prototype]] qui pointe vers son objet prototype. Lorsqu'il tente d'accéder à une propriété ou à une méthode qui n'existe pas sur un objet, le moteur JavaScript recherche l'objet prototype de l'objet.

Si la propriété ou la méthode n'est pas trouvée sur l'objet prototype, continuez à rechercher les objets prototypes de l'objet prototype jusqu'à ce que l'objet prototype de niveau supérieur soit trouvé. La structure de chaîne ainsi formée est la chaîne prototype.

L'objet de niveau supérieur dans la chaîne de prototypes est Object.prototype, et tous les objets en héritent. L'objet Object.prototype contient des propriétés et méthodes communes aux objets JavaScript, telles que toString() et hasOwnProperty().

En JavaScript, nous pouvons définir explicitement le prototype d'un objet en utilisant la méthode Object.create(). Par exemple, nous pouvons créer un nouvel objet et définir son prototype sur le prototype de l'objet Person :

var Person = function(name){
  this.name = name;
};

Person.prototype.sayHello = function(){
  console.log("Hello, my name is " + this.name);
};

var john = new Person("John");

var jane = Object.create(Person.prototype);

jane.name = "Jane";

jane.sayHello(); // 输出: Hello, my name is Jane

Dans l'exemple ci-dessus, nous avons créé un objet Person et ajouté une méthode sayHello à son objet prototype, puis avons passé Object The. La méthode create() crée un nouvel objet Jane et définit son prototype sur le prototype de l'objet Person. De cette façon, Jane peut accéder aux propriétés et méthodes de l'objet Person via la chaîne de prototypes, y compris la méthode sayHello.

En même temps, nous pouvons visualiser le prototype d'un objet grâce à la méthode Object.getPrototypeOf() :

console.log(Object.getPrototypeOf(jane) === Person.prototype); // 输出: true

Lorsque nous souhaitons accéder aux propriétés ou aux méthodes d'un objet, le moteur JavaScript recherchera d'abord les propriétés et méthodes sur l’objet. Dans le cas contraire, il sera recherché dans l’objet prototype. Si la propriété ou la méthode n'existe pas sur l'objet prototype, il continuera à rechercher sur le prototype de l'objet prototype jusqu'à ce qu'il trouve un objet avec la propriété ou la méthode, ou atteigne le niveau supérieur de la chaîne de prototypes (Object.prototype).

Si la propriété ou la méthode n'est pas trouvée dans toute la chaîne de prototypes, undefined sera renvoyé. Si nous écrivons du code qui tente d'accéder à une propriété ou une méthode avec une valeur non définie, une exception TypeError sera levée. Par conséquent, lorsque nous utilisons la chaîne de prototypes, nous devons faire très attention à ce que l'objet et son objet prototype contiennent les propriétés et les méthodes dont nous avons besoin.

De manière générale, la chaîne de prototypes est un concept très important en JavaScript. Comprendre la signification et les mécanismes de la chaîne de prototypes est essentiel pour maîtriser la programmation orientée objet en JavaScript. Comprendre le rôle et l'utilisation de la chaîne de prototypes peut nous aider à écrire du code JavaScript meilleur et plus efficace.

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