Maison  >  Article  >  interface Web  >  A quoi servent les prototypes et les chaînes de prototypes ?

A quoi servent les prototypes et les chaînes de prototypes ?

WBOY
WBOYoriginal
2024-01-13 12:58:061016parcourir

A quoi servent les prototypes et les chaînes de prototypes ?

La raison pour laquelle les prototypes et les chaînes de prototypes existent est de parvenir à l'héritage et au partage des propriétés des objets dans le langage JavaScript. En JavaScript, tout est objet, y compris les fonctions. Chaque objet possède une propriété, appelée prototype, qui pointe vers un autre objet, appelé objet prototype. Les objets peuvent hériter des propriétés et des méthodes des objets prototypes.

L'avantage de l'implémentation de propriétés et de méthodes partagées via des prototypes est l'économie de mémoire. Considérons un objet A, qui possède des propriétés et des méthodes, puis créez l'objet B et faites-le hériter de l'objet A. Si les propriétés et méthodes sont copiées directement sur l'objet B, alors chaque instance de B aura les mêmes propriétés et méthodes, entraînant un gaspillage de mémoire. Grâce au prototype, toutes les instances B peuvent partager les propriétés et les méthodes de l'objet A et n'ont besoin que de sauvegarder une copie de l'objet prototype.

La chaîne de prototypes fait référence au mécanisme par lequel les objets sont liés entre eux via des prototypes. Si une propriété ou une méthode d'un objet ne peut pas être trouvée sur l'objet lui-même, JavaScript poursuivra la recherche le long de la chaîne de prototypes jusqu'à ce qu'elle soit trouvée ou introuvable. Ce mécanisme permet aux objets d'hériter et de partager des propriétés et des méthodes, réalisant ainsi la relation d'héritage entre les objets.

Ce qui suit est un exemple de code spécifique pour illustrer le concept de prototype et de chaîne de prototypes :

// 通过构造函数创建一个对象
function Animal(name) {
  this.name = name;
}

// 在Animal的原型对象上添加一个方法
Animal.prototype.sayHello = function() {
  console.log("Hello, I'm " + this.name);
};

// 创建一个Animal实例
var animal = new Animal("Tom");
animal.sayHello(); // 输出: Hello, I'm Tom

// 创建另一个对象,它继承自Animal
function Cat(name, color) {
  Animal.call(this, name); // 调用Animal的构造函数
  this.color = color;
}

// 使用Object.create方法将Cat的原型对象指向Animal的原型对象
Cat.prototype = Object.create(Animal.prototype);
Cat.prototype.constructor = Cat;

// 在Cat的原型对象上添加一个方法
Cat.prototype.sayMeow = function() {
  console.log("Meow, I'm " + this.name);
};

// 创建一个Cat实例
var cat = new Cat("Kitty", "White");
cat.sayHello(); // 输出: Hello, I'm Kitty
cat.sayMeow(); // 输出: Meow, I'm Kitty

Dans le code ci-dessus, Animal est un constructeur, qui possède un prototype d'objet prototype. Cat hérite d'Animal et pointe l'objet prototype de Cat vers l'objet prototype d'Animal en appelant la méthode Object.create. De cette façon, l'instance Cat héritera des propriétés et des méthodes d'Animal et pourra ajouter de nouvelles méthodes sur son propre objet prototype.

Grâce au mécanisme de prototype et de chaîne de prototypes, JavaScript réalise l'héritage et le partage d'attributs entre les objets, améliorant ainsi l'efficacité et la maintenabilité du programme.

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