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