Noms de propriétés de fonction

Beginner

This tutorial is from open-source community. Access the source code

Introduction

Dans ce laboratoire, nous allons explorer la manière d'utiliser JavaScript pour obtenir un tableau des noms de propriétés de fonction à partir des propriétés énumérables propres à un objet. Nous allons apprendre à itérer sur les propriétés d'un objet et à utiliser Object.keys() et Object.getPrototypeOf() pour inclure les propriétés héritées si nécessaire. Nous allons également filtrer les propriétés non fonctionnelles à l'aide de Array.prototype.filter().

Comment obtenir les noms de propriétés de fonction à partir d'un objet en JavaScript

Pour obtenir un tableau des noms de propriétés de fonction à partir d'un objet, utilisez la fonction functions fournie ci-dessous. Cette fonction peut également inclure facultativement les propriétés héritées.

Voici comment utiliser la fonction functions :

  1. Ouvrez le Terminal/SSH et tapez node pour commencer à pratiquer la programmation.
  2. Utilisez Object.keys() pour itérer sur les propriétés propres à l'objet.
  3. Si vous voulez inclure les propriétés héritées, définissez l'argument inherited sur true et utilisez Object.getPrototypeOf() pour obtenir les propriétés héritées de l'objet.
  4. Utilisez Array.prototype.filter() pour ne conserver que les propriétés qui sont des fonctions.
  5. Omettez le second argument, inherited, pour ne pas inclure les propriétés héritées par défaut.
const functions = (obj, inherited = false) =>
  (inherited
    ? [...Object.keys(obj), ...Object.keys(Object.getPrototypeOf(obj))]
    : Object.keys(obj)
  ).filter((key) => typeof obj[key] === "function");

Voici un exemple d'utilisation de la fonction functions :

function Foo() {
  this.a = () => 1;
  this.b = () => 2;
}
Foo.prototype.c = () => 3;
functions(new Foo()); // ['a', 'b']
functions(new Foo(), true); // ['a', 'b', 'c']

Résumé

Félicitations ! Vous avez terminé le laboratoire sur les noms de propriétés de fonction. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.