"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment récupérer des propriétés héritées non énumérables en JavaScript ?

Comment récupérer des propriétés héritées non énumérables en JavaScript ?

Publié le 2024-11-13
Parcourir:836

How to Retrieve Inherited Non-Enumerable Properties in JavaScript?

Récupération de propriétés héritées non énumérables

En JavaScript, l'accès aux propriétés d'objet repose sur diverses méthodes adaptées à des exigences spécifiques. Cependant, lorsqu'il s'agit d'obtenir des propriétés non énumérables et non propres, il n'existe pas de mécanisme simple.

Pour résoudre ce problème, une fonction personnalisée peut être utilisée qui combine Object.getOwnPropertyNames() pour obtenir des propriétés non énumérables. et parcourt la chaîne de prototypes pour récupérer ceux hérités.

function getAllProperties(obj) {
  var allProps = [], curr = obj;
  do {
    var props = Object.getOwnPropertyNames(curr);
    props.forEach(function(prop) {
      if (allProps.indexOf(prop) === -1)
        allProps.push(prop);
    });
  } while (curr = Object.getPrototypeOf(curr));
  return allProps;
}

console.log(getAllProperties([1, 2, 3]));

Dans cet exemple, [1, 2, 3] est une propriété héritée et la fonction la récupère avec succès sans hériter de son statut d'énumération. Cette approche donne aux développeurs la possibilité d'accéder à des propriétés héritées non énumérables, ce qui est crucial pour certains scénarios impliquant des prototypes et l'héritage d'objets.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3