Maison >interface Web >js tutoriel >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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-10 20:20:03757parcourir

How to Retrieve Non-Enumerable Inherited Properties in JavaScript?

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

La détermination de l'existence de propriétés héritées non énumérables est cruciale en JavaScript. Bien que des méthodes telles que Object.keys() et Object.getOwnPropertyNames() donnent accès aux propriétés des objets, elles excluent les attributs hérités non énumérables.

Pour combler cette lacune, nous pouvons exploiter la méthode Object.getOwnPropertyNames() dans en conjonction avec la traversée de la chaîne prototype. Cette approche nous permet d'identifier les propriétés non énumérables à n'importe quel niveau de la hiérarchie d'héritage.

Voici une fonction qui démontre cette technique :

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]));

En combinant Object.getOwnPropertyNames() avec le prototype Parcours de chaîne, nous pouvons désormais récupérer une liste complète des propriétés énumérables et non énumérables d'un objet, y compris celles héritées de ses prototypes parents. Cette approche offre une vue complète de toutes les propriétés, quel que soit leur visibilité ou leur statut de propriété.

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