Obtention de noms de propriétés hérités non énumérables d'un objet en JavaScript
JavaScript fournit diverses méthodes pour accéder aux propriétés d'objet en fonction d'exigences spécifiques. Cependant, aucune de ces méthodes ne permet de récupérer des propriétés non énumérables et non propres. Cet article explore des approches alternatives pour extraire de telles propriétés.
Solution : tirer parti de getOwnPropertyNames et du chaînage de prototypes
Puisque Object.getOwnPropertyNames() peut récupérer des propriétés non énumérables, il peut être combiné avec un prototype de traversée de chaîne. La fonction JavaScript suivante, getAllProperties(), parcourt la chaîne de prototypes d'un objet et compile une liste de toutes ses propriétés non énumérables et non propres :
function getAllProperties(obj){</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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
}
Exemple Utilisation
Pour démontrer la fonctionnalité de la fonction getAllProperties(), considérez l'objet tableau suivant :
console.log(getAllProperties([1,2,3]));
Sortie :
[ 'length' ]
Les listes de sortie la propriété non énumérable 'length', qui appartient à la chaîne Array.prototype.
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!