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

Comprendre les caractéristiques et les usages des prototypes et chaînes de prototypes

王林
Libérer: 2024-01-10 12:15:00
original
1192 Les gens l'ont consulté

Comprendre les caractéristiques et les usages des prototypes et chaînes de prototypes

Explorez les caractéristiques et les applications des prototypes et des chaînes de prototypes

1. Que sont les prototypes et les chaînes de prototypes

En JavaScript, chaque objet a un objet prototype. Un objet prototype est également un objet et il peut avoir des propriétés et des méthodes. Les objets en JavaScript sont basés sur des prototypes, ce qui signifie qu'un objet peut hériter des propriétés et des méthodes d'un autre objet.

L'objet prototype de l'objet peut pointer vers l'objet prototype de l'objet via l'attribut __proto__属性来访问。这个__proto__, qui est une référence à l'objet prototype. Grâce à la chaîne de prototypes, les objets peuvent rechercher des propriétés et des méthodes tout au long de la chaîne de prototypes.

2. Caractéristiques des prototypes

  1. Les objets prototypes des objets sont partagés. En JavaScript, lorsque l'on crée un nouvel objet, il est automatiquement associé à un objet prototype. Plusieurs objets peuvent être associés au même objet prototype, partageant ainsi des propriétés et des méthodes dans l'objet prototype.

Exemple de code :

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.greet = function() {
  console.log('Hello, ' + this.name + '!');
};

var person1 = new Person('Alice', 20);
var person2 = new Person('Bob', 25);

console.log(person1.__proto__ === person2.__proto__);  // true
Copier après la connexion
  1. Les objets peuvent utiliser les propriétés et les méthodes des objets prototypes. Lorsque nous accédons à une propriété d'un objet ou appelons une méthode sur un objet, si l'objet lui-même ne possède pas cette propriété ou cette méthode, il recherchera le long de la chaîne de prototypes.

Exemple de code :

person1.greet();  // Hello, Alice!

console.log(person1.hasOwnProperty('name'));  // true,对象自身有name属性
console.log(person1.hasOwnProperty('greet'));  // false,对象自身没有greet方法

console.log(person1.__proto__.hasOwnProperty('greet'));  // true,原型对象有greet方法

person1.name = 'Eve';

console.log(person1.hasOwnProperty('name'));  // true,对象自身有name属性,不会修改原型对象的属性
Copier après la connexion

3. Caractéristiques de la chaîne prototype

  1. La chaîne prototype est une relation entre des objets. Grâce à la chaîne de prototypes, un objet peut rechercher des propriétés et des méthodes niveau par niveau jusqu'à ce qu'il trouve ou atteigne le sommet de la chaîne de prototypes.
  2. La chaîne prototype est linéaire. Dans la chaîne de prototypes, chaque objet n'a qu'un seul prototype, son objet parent.

Exemple de code :

function Animal(name) {
  this.name = name;
}

function Cat(name, color) {
  this.name = name;
  this.color = color;
}

Cat.prototype = new Animal();

var cat = new Cat('Tom', 'blue');

console.log(cat instanceof Cat);  // true
console.log(cat instanceof Animal);  // true

console.log(cat.hasOwnProperty('name'));  // true,对象自身有name属性
console.log(cat.hasOwnProperty('color'));  // true,对象自身有color属性

console.log(cat.__proto__ === Cat.prototype);  // true
console.log(Cat.prototype.__proto__ === Animal.prototype);  // true
console.log(Animal.prototype.__proto__ === Object.prototype);  // true,原型链的顶端是Object.prototype
Copier après la connexion

4. Application du prototype et de la chaîne de prototypes

  1. Héritage : grâce à la chaîne de prototypes, la relation d'héritage entre les objets peut être réalisée. L'objet prototype de l'objet enfant pointe vers l'objet parent, afin que l'objet enfant puisse hériter des propriétés et méthodes de l'objet parent.

Exemple de code :

function Animal(name) {
  this.name = name;
}

Animal.prototype.eat = function() {
  console.log(this.name + ' is eating.');
};

function Cat(name, color) {
  this.name = name;
  this.color = color;
}

Cat.prototype = new Animal();

var cat = new Cat('Tom', 'blue');

cat.eat();  // Tom is eating.
Copier après la connexion
  1. Partage de propriétés et de méthodes : grâce à des objets prototypes, le partage de propriétés et de méthodes entre plusieurs objets peut être réalisé. Cela économise de l'espace mémoire, surtout si plusieurs instances doivent partager les mêmes propriétés et méthodes.

Exemple de code :

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHi = function() {
  console.log('Hi, I am ' + this.name);
};

var person1 = new Person('Alice', 20);
var person2 = new Person('Bob', 25);

person1.sayHi();  // Hi, I am Alice
person2.sayHi();  // Hi, I am Bob
Copier après la connexion

Résumé :

Le prototype et la chaîne de prototypes sont des concepts importants en JavaScript. Ils forment le mécanisme d'héritage et de partage entre les objets. Grâce aux prototypes et aux chaînes de prototypes, nous pouvons mieux organiser et gérer les propriétés et les méthodes des objets, et améliorer la réutilisabilité et la maintenabilité du code. Dans le développement réel, une compréhension approfondie et une maîtrise de l'utilisation des caractéristiques et des applications des prototypes et des chaînes de prototypes contribueront à améliorer les compétences en programmation JavaScript.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!