Récupération des noms de propriétés héritées non énumérables en JavaScript
En JavaScript, l'accès aux propriétés des objets est essentiel pour la manipulation des objets. Bien qu'il existe diverses méthodes pour récupérer des propriétés, chacune se concentre sur des types de propriétés spécifiques. Cela pose un défi lorsque l'on tente d'accéder aux propriétés non énumérables et non propres d'un objet.
Comprendre les types de propriétés
Les propriétés JavaScript peuvent être classées en trois types :
Le défi
Le problème survient lors de la tentative de récupération d'objets non énumérables, propriétés non propres d'un objet. Les méthodes conventionnelles comme Object.keys() et les boucles for...in ne fourniront pas ces propriétés.
La solution : parcourir la chaîne de prototypes
Pour récupérer des non- propriétés énumérables et non propres, une fonction personnalisée peut être créée qui traverse la chaîne de prototypes de l'objet. La fonction utilise Object.getOwnPropertyNames() pour récupérer les propriétés non énumérables, y compris celles héritées de la chaîne de prototypes.
Exemple de fonction
function getAllProperties(obj) { var allProps = []; var 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]));
Sortie :
[ "0", "1", "2", "length" ]
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!