Maison >interface Web >Questions et réponses frontales >javascript supprimer le prototype

javascript supprimer le prototype

WBOY
WBOYoriginal
2023-05-06 10:07:07631parcourir

JavaScript est un langage de script puissant avec une syntaxe et des fonctionnalités riches. Le prototype est un concept important en JavaScript. Le prototype est un mécanisme en JavaScript qui prend en charge l'héritage d'objets. Il s'agit d'un objet spécial qui peut être utilisé comme propriété par défaut lors de la création d'un objet. L’utilisation de prototypes permet d’hériter et de réutiliser plus facilement des objets, c’est donc un concept qu’il faut maîtriser en JavaScript. Cependant, nous devons parfois supprimer le prototype, que devons-nous faire à ce moment-là ? Cet article détaillera comment supprimer des prototypes en JavaScript.

  1. Qu'est-ce qu'un prototype

En JavaScript, tout est un objet. Lorsque nous créons un objet, il hérite automatiquement d'un objet appelé prototype, qui est un objet intégré en JavaScript. Nous pouvons considérer un prototype comme un modèle qui définit les propriétés et les méthodes appartenant à un objet. Par exemple, lorsque nous créons un objet Dog, il héritera automatiquement d'un objet prototype, qui contient toutes les propriétés et méthodes communes des objets Dog, telles que le nom, le son, l'aboiement, etc.

  1. Comment supprimer le prototype

Parfois, nous devons supprimer le prototype, par exemple, nous ne voulons pas qu'un objet hérite des propriétés et des méthodes, ou nous voulons réinitialiser le prototype d'un objet, etc. Alors, comment supprimer un prototype ? Deux méthodes sont présentées ci-dessous :

Méthode 1 : Utilisez la méthode Object.setPrototypeOf()

La méthode Object.setPrototypeOf() est utilisée pour définir le prototype d'un objet sur un autre objet ou null. Lorsque nous définissons le prototype sur null, cela équivaut à supprimer le prototype. Voici un exemple :

let Dog = function(name) {
    this.name = name;
};

let dog = new Dog('小狗');
console.log(Dog.prototype); // {constructor: ƒ}
console.log(dog.__proto__); // {constructor: ƒ}

Object.setPrototypeOf(dog, null);
console.log(Dog.prototype); // {constructor: ƒ}
console.log(dog.__proto__); // null

Dans l'exemple ci-dessus, nous avons appelé la méthode Object.setPrototypeOf() pour définir le prototype de l'objet chien sur null, ce qui équivaut à supprimer le prototype. À ce stade, nous pouvons constater que la valeur de dog.__proto__ est nulle.

Méthode 2 : Utiliser le mot-clé delete

En plus d'utiliser la méthode Object.setPrototypeOf(), on peut également utiliser le mot-clé delete en JavaScript pour supprimer le prototype, par exemple : # 🎜🎜#

let Dog = function(name) {
    this.name = name;
};

let dog = new Dog('小狗');
console.log(Dog.prototype); // {constructor: ƒ}
console.log(dog.__proto__); // {constructor: ƒ}

delete dog.__proto__;
console.log(Dog.prototype); // {constructor: ƒ}
console.log(dog.__proto__); // undefined
Dans l'exemple ci-dessus, nous avons utilisé le mot-clé delete pour supprimer le prototype de l'objet dog. À ce stade, nous pouvons constater que la valeur de dog.__proto__ n'est pas définie.

    Summary
Le prototype en JavaScript est un mécanisme important pour l'héritage d'objets. Il s'agit d'un objet spécial qui contient des propriétés et des méthodes. Dans certains cas, nous devons supprimer le prototype, ce qui peut être réalisé en utilisant la méthode Object.setPrototypeOf() ou le mot-clé delete. Il convient de noter que la suppression du prototype peut avoir un certain impact sur l'héritage et la réutilisation du code, il doit donc être utilisé avec prudence.

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