Cara menggunakan javascript get non-enumerable properties

How to get an array of function property names from own enumerable properties of an object in JavaScript ?

Improve Article

Save Article

Like Article

  • Last Updated : 19 Jul, 2021

  • Read
  • Discuss
  • Courses
  • Practice
  • Video
  • Improve Article

    Save Article

    Enumerable Properties: All the properties of an object that can be iterated using for..in loop or Object.keys() method are known as enumerable properties.

    In this article, we will see how to get an array of functions of an object that are enumerable. It can be achieved by following these 2 steps.

    • Using Object.keys() method, we can get an array of all enumerable properties (containing functions and data members) of an Object.

      Syntax:

      Object.keys(object_name)
    • Then we can filter the above obtained array using Array filter() method so that it contains only enumerable function names (eliminating all data members).

      Syntax:

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

    In the following implementation for creating a non-enumerable property, we have used Object.defineProperty() method.

    Example:

    Javascript




    <script>

      

        // Person object has name, age, salary

        // and print properties 

        

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

        

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

    new_arr = arr_name.filter( (element)=> {.....} )
    3
    new_arr = arr_name.filter( (element)=> {.....} )
    4
    new_arr = arr_name.filter( (element)=> {.....} )
    5
    new_arr = arr_name.filter( (element)=> {.....} )
    6

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

    new_arr = arr_name.filter( (element)=> {.....} )
    3
    ["name", "age", "print"]
    ["print"]
    0
    ["name", "age", "print"]
    ["print"]
    1
    ["name", "age", "print"]
    ["print"]
    2

    ["name", "age", "print"]
    ["print"]
    3
    ["name", "age", "print"]
    ["print"]
    4
    ["name", "age", "print"]
    ["print"]
    5
    ["name", "age", "print"]
    ["print"]
    6
    ["name", "age", "print"]
    ["print"]
    5
    ["name", "age", "print"]
    ["print"]
    8

    new_arr = arr_name.filter( (element)=> {.....} )
    3<script>0

        <script>2

      

        <script>5

        <script>7<script>8<script>9

    new_arr = arr_name.filter( (element)=> {.....} )
    3 1 2
    new_arr = arr_name.filter( (element)=> {.....} )
    6

    new_arr = arr_name.filter( (element)=> {.....} )
    3 5 6
    new_arr = arr_name.filter( (element)=> {.....} )
    6

         9

      

            2

        <script>7    5<script>9

    new_arr = arr_name.filter( (element)=> {.....} )
    3 1
    ["name", "age", "print"]
    ["print"]
    1
    ["name", "age", "print"]
    ["print"]
    2

    ["name", "age", "print"]
    ["print"]
    3// Person object has name, age, salary2// Person object has name, age, salary3// Person object has name, age, salary4

    new_arr = arr_name.filter( (element)=> {.....} )
    3<script>0

    new_arr = arr_name.filter( (element)=> {.....} )
    3 5 6
    new_arr = arr_name.filter( (element)=> {.....} )
    6

         9

      

            5

            7

            9

      

        // and print properties 2

        // and print properties 4

        // and print properties 6

        // and print properties 8

            0

            2

    new_arr = arr_name.filter( (element)=> {.....} )
    3    4     5     6    7    8

         9

      

        

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

        

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

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


    Output:
    ["name", "age", "print"]
    ["print"]

    Explanation:

    In the above code, we have an object named Person with 3 data members (name, age and salary) and 2 functions (‘print’ and ‘greeting’)  out of which salary data-member and greeting function are non-enumerable properties.

    PropertyTypeEnumerabilitynamevariableenumerableagevariableenumerablesalaryvariablenon-enumerableprintfunctionenumerablegreetingfunctionnon-enumerable

    Here ‘print‘ is the only function which is enumerable. Using Object.keys(Person) we get an array containing all enumerable properties i.e. [“name”, “age”, “print”] .

    Then we used Array.filter() property to filter out all variables so that array has only function property names, i.e. [“print”].