รับชื่อคลาสโดยตรงจากคลาส
คำตอบก่อนหน้านี้อธิบายว่าใช้someClassInstance.constructor.nameงานได้ดี แต่ถ้าคุณต้องการแปลงชื่อคลาสให้เป็นสตริงโดยทางโปรแกรมและไม่ต้องการสร้างอินสแตนซ์เพียงแค่นั้นให้จำไว้ว่า:
typeof YourClass === "function"
และเนื่องจากทุกฟังก์ชั่นมีnameคุณสมบัติวิธีที่ดีอีกวิธีหนึ่งในการรับสตริงที่มีชื่อคลาสของคุณคือการทำ:
YourClass.name
ต่อไปนี้เป็นตัวอย่างที่ดีว่าทำไมสิ่งนี้ถึงมีประโยชน์
กำลังโหลดส่วนประกอบของเว็บ
ในขณะที่เอกสาร MDNสอนเรานี่คือวิธีที่คุณโหลดองค์ประกอบของเว็บ:
customElements.define("your-component", YourComponent);
ในกรณีที่มีการขยายชั้นเรียนจากYourComponent HTMLElementเนื่องจากถือว่าเป็นแนวปฏิบัติที่ดีในการตั้งชื่อคลาสของคอมโพเนนต์หลังจากแท็กคอมโพเนนต์เองคุณควรเขียนฟังก์ชันตัวช่วยซึ่งส่วนประกอบทั้งหมดของคุณสามารถใช้เพื่อลงทะเบียนตัวเอง ดังนั้นนี่คือฟังก์ชันนั้น:
function registerComponent(componentClass) {
    const componentName = upperCamelCaseToSnakeCase(componentClass.name);
    customElements.define(componentName, componentClass);
}
ดังนั้นสิ่งที่คุณต้องทำคือ:
registerComponent(YourComponent);
อันไหนดีเพราะมันเกิดข้อผิดพลาดน้อยกว่าการเขียนแท็กองค์ประกอบด้วยตัวเอง เพื่อสรุปมันนี่คือupperCamelCaseToSnakeCase()ฟังก์ชั่น:
// converts `YourString` into `your-string`
function upperCamelCaseToSnakeCase(value) {
    return value
        // first char to lower case
        .replace(/^([A-Z])/, $1 => $1.toLowerCase())
        // following upper chars get preceded with a dash
        .replace(/([A-Z])/g, $1 => "-" + $1.toLowerCase());
}
               
              
instance.constructor.nameและclass.nameกลับชื่อชั้นใน ES6 ที่เหมาะสม