¿Cómo obtener una array de nombres de propiedades de función a partir de propiedades enumerables propias de un objeto en JavaScript?

Propiedades enumerables: todas las propiedades de un objeto que se pueden iterar utilizando el bucle for..in o el método Object.keys() se conocen como propiedades enumerables.

En este artículo, veremos cómo obtener una array de funciones de un objeto que son enumerables . Se puede lograr siguiendo estos 2 pasos.

  • Usando el método Object.keys() , podemos obtener una array de todas las propiedades enumerables (que contienen funciones y miembros de datos) de un Objeto.

    Sintaxis:

    Object.keys(object_name)
  • Luego, podemos filtrar la array obtenida anteriormente utilizando el método Array filter() para que contenga solo nombres de funciones enumerables (eliminando todos los miembros de datos).

    Sintaxis:

    new_arr = arr_name.filter( (element)=> {.....} )

En la siguiente implementación para crear una propiedad no enumerable, hemos utilizado el método Object.defineProperty().

Ejemplo:

Javascript

<script>
  
    // Person object has name, age, salary
    // and print properties 
    // Except salary, all properties are enumerable
    let Person = {
        name: "Mahesh",
        age: 25,
        print: function () {
            console.log(`${this.name} ${(this, age)}`);
        },
    };
  
    // salary- non enumerable property
    Object.defineProperty(Person, "salary", {
        value: "Rs. 50,000",
        enumerable: false,
    });
  
    // greeting- non enumerable function
    Object.defineProperty(Person, "greeting", {
        value: function () {
            console.log("Welcome to GFG");
        },
        enumerable: false,
    });
  
    // arr contains all the enumerable
    // properties of Person
    let arr = Object.keys(Person);
  
    // functionsArr contains enumerable
    // function properties of Person.
    // typeof returns an string representing
    // data type.
    // Using filter() method to filter the array
    let functionsArr = arr.filter((key) => {
        return typeof Person[key] === "function";
    });
  
    console.log(arr);
    console.log(functionsArr);
</script>

Producción:

["name", "age", "print"]
["print"]

Explicación:

En el código anterior, tenemos un objeto llamado Persona con 3 miembros de datos ( nombre, edad y salario ) y 2 funciones (‘ imprimir’ y ‘ saludo’ ) de los cuales el miembro de datos de salario y la función de saludo son propiedades no enumerables.

Propiedad Escribe enumerabilidad
nombre variable enumerable
años variable enumerable
salario variable no enumerable
impresión función enumerable
saludo función no enumerable

Aquí ‘ imprimir ‘ es la única función que es enumerable. Usando Object.keys(Person) obtenemos una array que contiene todas las propiedades enumerables, es decir, [“nombre”, “edad”, “impresión”].

Luego usamos la propiedad Array.filter() para filtrar todas las variables, de modo que la array solo tenga nombres de propiedad de función, es decir, [“imprimir”].

Publicación traducida automáticamente

Artículo escrito por durgeshpushpakar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *