Retrieve the Class Name at Runtime in JavaScript and Node.js

Sometimes you need to retrieve the name of a class in JavaScript. This is helpful for debug messages or when using the class name as an identifier. Retrieving the class name in JavaScript is different for static and instance methods.

This tutorial walks you through the individual method types and shows you how to access the class name.

Node.js Series Overview

  1. String Replace All Appearances
  2. Remove All Whitespace From a String in JavaScript
  3. Generate a Random ID or String in Node.js or JavaScript
  4. Remove Extra Spaces From a String in JavaScript or Node.js
  5. Remove Numbers From a String in JavaScript or Node.js
  6. Get the Part Before a Character in a String in JavaScript or Node.js
  7. Get the Part After a Character in a String in JavaScript or Node.js
  8. How to Check if a Value is a String in JavaScript or Node.js
  9. Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
  10. Check if a Value is a String in JavaScript and Node.js
  11. Limit and Truncate a String to a Given Length in JavaScript and Node.js
  12. Split a String into a List of Characters in JavaScript and Node.js
  13. How to Generage a UUID in Node.js
  14. Reverse a String in JavaScript or Node.js
  15. Split a String into a List of Lines in JavaScript or Node.js
  16. Split a String into a List of Words in JavaScript or Node.js
  17. Detect if a String is in camelCase Format in Javascript or Node.js
  18. Check If a String Is in Lowercase in JavaScript or Node.js
  19. Check If a String is in Uppercase in JavaScript or Node.js
  20. Get the Part After First Occurrence in a String in JavaScript or Node.js
  21. Get the Part Before First Occurrence in a String in JavaScript or Node.js
  22. Get the Part Before Last Occurrence in a String in JavaScript or Node.js
  23. Get the Part After Last Occurrence in a String in JavaScript or Node.js
  24. How to Count Words in a File
  25. How to Shuffle the Characters of a String in JavaScript or Node.js
  26. Append Characters or Words to a String in JavaScript or Node.js
  27. Check if a String is Empty in JavaScript or Node.js
  28. Ensure a String Ends with a Given Character in JavaScript or Node.js
  29. Left-Trim Characters Off a String in JavaScript or Node.js
  30. Right-Trim Characters Off a String in JavaScript or Node.js
  31. Lowercase the First Character of a String in JavaScript or Node.js
  32. Uppercase the First Character of a String in JavaScript or Node.js
  33. Prepend Characters or Words to a String in JavaScript or Node.js
  34. Check if a String is a Number
  35. Convert a String to Buffer
  36. Prevent Line Breaks in String Template Literals

In Static Methods

Retrieving the class name in static methods is pretty straightforward. Because JavaScript represents classes as functions, you can access the name property to retrieve the name of the class.

Retrieve the class name in static methods by either using this.name or Class.name:

class User {  
  /**
   * Returns the string 'User'.
   *
   * @returns {String}
   */
  static className() {
    return this.name

    // is the same as
    // return User.name
  }
}

console.log(  
  User.className()
)
// 'User'

Be Aware of a Static “name“ Property in Classes

There’s a pitfall you should be aware of. When defining a static name property in your class, it will overwrite the name property of the class.

class User {  
  /**
   * Returns the name.
   *
   * @returns {String}
   */
  static get name () {
    return 'Marcus'
  }

  /**
   * Returns the string 'Marcus' because the static `name`
   * property overwrites the name property of the class.
   *
   * @returns {String}
   */
  static className() {
    return this.name
  }
}

console.log(  
  User.className()
)
// 'Marcus'

It’s recommended to use a static name property with caution when working with JavaScript’s classes. It can be a helpful way to customize the class name to your own needs.

In Instance Methods

You can access the class name in instance methods using either the constructor or the class itself. The constructor is available via this.constructor and provides the class properties:

class User {  
  /**
   * Returns the string 'User'.
   *
   * @returns {String}
   */
  className() {
    return this.constructor.name

    // is the same as
    // return User.name
  }
}

console.log(  
  User.className()
)
// 'User'

Text

Having a Static “name“ Property in Classes

Please notice, having a static name property on your class overrides the actual class name:

class User {  
  /**
   * Returns the name.
   *
   * @returns {String}
   */
  static get name () {
    return 'Marcus'
  }

  /**
   * Returns the string 'Marcus' because the static `name`
   * property overwrites the name property of the class.
   *
   * @returns {String}
   */
  static className() {
    return this.constructor.name
  }
}

console.log(  
  User.className()
)
// 'Marcus'

That’s it about accessing the class name from static and instance methods. If you know of another way to access the class name, please share it in the comments below!

Explore the Library

Find interesting tutorials and solutions for your problems.