Maison >Problème commun >Que sont les prototypes et les chaînes de prototypes

Que sont les prototypes et les chaînes de prototypes

百草
百草original
2023-11-09 17:59:482221parcourir

Prototype, un objet en js, utilisé pour définir les propriétés et méthodes d'autres objets. Chaque constructeur possède un attribut prototype. Cet attribut est un pointeur vers un objet prototype, lorsqu'un nouvel objet est créé, ce nouvel objet Propriétés et. les méthodes sont héritées de l’attribut prototype de son constructeur. Chaîne de prototypes, en essayant d'accéder aux propriétés d'un objet, js vérifiera d'abord si l'objet possède cette propriété. Sinon, alors js se tournera vers le prototype de l'objet. Si l'objet prototype n'a pas cette propriété, il le fera. continuez à chercher le prototype du prototype.

Que sont les prototypes et les chaînes de prototypes

Le système d'exploitation de ce tutoriel : système Windows 10, ordinateur DELL G3.

Le prototype et la chaîne de prototypes sont un concept important dans la programmation orientée objet, en particulier dans les langages comme JavaScript qui prennent en charge les prototypes dynamiques. Comprendre les prototypes et les chaînes de prototypes est essentiel pour comprendre comment les objets sont créés et utilisés, ainsi que comment appeler leurs méthodes.

Prototype :

Un prototype est un objet en JavaScript qui est utilisé pour définir les propriétés et les méthodes d'autres objets. Chaque constructeur possède un attribut prototype, qui est un pointeur vers un objet prototype. Lorsqu'un nouvel objet est créé, le nouvel objet hérite des propriétés et des méthodes de l'attribut prototype de son constructeur (c'est-à-dire l'objet prototype).

Par exemple :

function Person(name) {  
  this.name = name;  
}  
  
Person.prototype.sayHello = function() {  
  return 'Hello, my name is ' + this.name;  
};  
  
let person1 = new Person('Alice');  
let person2 = new Person('Bob');  
  
console.log(person1.sayHello()); // 输出: 'Hello, my name is Alice'  
console.log(person2.sayHello()); // 输出: 'Hello, my name is Bob'

Dans l'exemple ci-dessus, nous avons défini un constructeur Person et une méthode sayHello via Person.prototype. Ensuite, nous avons créé deux objets Person, qui héritent tous deux de la méthode sayHello. En effet, ils héritent tous de l'objet prototype Person.prototype.

Chaîne de prototypes :

Lorsque vous essayez d'accéder à une propriété d'un objet, JavaScript vérifiera d'abord si l'objet possède cette propriété. Sinon, JavaScript se tournera vers le prototype de l'objet (c'est-à-dire l'attribut prototype du constructeur). Si l'objet prototype ne possède pas cette propriété, JavaScript continuera à rechercher le prototype du prototype, et ainsi de suite, jusqu'à ce qu'il trouve un objet avec cette propriété ou atteigne le sommet de la chaîne de prototypes (c'est-à-dire null). C'est ce qu'on appelle la chaîne prototype.

Par exemple :

function Person(name) {  
  this.name = name;  
}  
  
Person.prototype.sayHello = function() {  
  return 'Hello, my name is ' + this.name;  
};  
  
let person1 = new Person('Alice');  
delete person1.sayHello; // 删除person1的sayHello属性  
  
console.log(person1.sayHello()); // 输出: 'Hello, my name is Alice'

Dans l'exemple ci-dessus, nous avons supprimé l'attribut sayHello de person1. Lorsque nous essayons d'accéder à person1.sayHello(), JavaScript vérifie d'abord si person1 possède un attribut sayHello. Puisque personne1 n'a pas cet attribut, JavaScript se tournera vers le prototype de personne1 (c'est-à-dire Person.prototype), qui a la méthode sayHello, c'est pourquoi on l'appelle. C'est à cela que sert la chaîne de prototypes : elle fournit un moyen de partager les propriétés et les méthodes d'un objet, même si ces propriétés et méthodes ne sont pas définies sur l'objet lui-même.

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