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!