diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index 8175b0d..232f6dd 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -38,13 +38,12 @@
 #include "third_party/base/numerics/safe_math.h"
 #include "third_party/base/ptr_util.h"
 
-const char* CJS_PrintParamsObj::g_pClassName = "PrintParamsObj";
 int CJS_PrintParamsObj::g_nObjDefnID = -1;
 
 void CJS_PrintParamsObj::DefineJSObjects(CFXJS_Engine* pEngine,
                                          FXJSOBJTYPE eObjType) {
   g_nObjDefnID =
-      pEngine->DefineObj(CJS_PrintParamsObj::g_pClassName, eObjType,
+      pEngine->DefineObj("PrintParamsObj", eObjType,
                          JSConstructor<CJS_PrintParamsObj, PrintParamsObj>,
                          JSDestructor<CJS_PrintParamsObj>);
 }
@@ -146,12 +145,11 @@
     {"mailDoc", mailDoc_static},
     {0, 0}};
 
-const char* CJS_Document::g_pClassName = "Document";
 int CJS_Document::g_nObjDefnID = -1;
 
 void CJS_Document::DefineJSObjects(CFXJS_Engine* pEngine,
                                    FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Document::g_pClassName, eObjType,
+  g_nObjDefnID = pEngine->DefineObj("Document", eObjType,
                                     JSConstructor<CJS_Document, Document>,
                                     JSDestructor<CJS_Document>);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
diff --git a/fpdfsdk/javascript/Document.h b/fpdfsdk/javascript/Document.h
index 308678f..0073042 100644
--- a/fpdfsdk/javascript/Document.h
+++ b/fpdfsdk/javascript/Document.h
@@ -38,7 +38,6 @@
       : CJS_Object(pObject) {}
   ~CJS_PrintParamsObj() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
 
   static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
@@ -272,7 +271,6 @@
   // CJS_Object
   void InitInstance(IJS_Runtime* pIRuntime) override;
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSPropertySpec PropertySpecs[];
   static JSMethodSpec MethodSpecs[];
diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp
index 288a24d..0a35bf5 100644
--- a/fpdfsdk/javascript/Field.cpp
+++ b/fpdfsdk/javascript/Field.cpp
@@ -165,13 +165,12 @@
     {"signatureValidate", signatureValidate_static},
     {0, 0}};
 
-const char* CJS_Field::g_pClassName = "Field";
 int CJS_Field::g_nObjDefnID = -1;
 
 void CJS_Field::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Field::g_pClassName, eObjType,
-                                    JSConstructor<CJS_Field, Field>,
-                                    JSDestructor<CJS_Field>);
+  g_nObjDefnID =
+      pEngine->DefineObj("Field", eObjType, JSConstructor<CJS_Field, Field>,
+                         JSDestructor<CJS_Field>);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
   DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
 }
diff --git a/fpdfsdk/javascript/Field.h b/fpdfsdk/javascript/Field.h
index 5427a69..11b6e7e 100644
--- a/fpdfsdk/javascript/Field.h
+++ b/fpdfsdk/javascript/Field.h
@@ -364,7 +364,6 @@
 
   void InitInstance(IJS_Runtime* pIRuntime) override;
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSPropertySpec PropertySpecs[];
   static JSMethodSpec MethodSpecs[];
diff --git a/fpdfsdk/javascript/Icon.cpp b/fpdfsdk/javascript/Icon.cpp
index ab37e13..7a0c758 100644
--- a/fpdfsdk/javascript/Icon.cpp
+++ b/fpdfsdk/javascript/Icon.cpp
@@ -14,13 +14,11 @@
     {"name", get_name_static, set_name_static},
     {0, 0, 0}};
 
-const char* CJS_Icon::g_pClassName = "Icon";
 int CJS_Icon::g_nObjDefnID = -1;
 
 void CJS_Icon::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID =
-      pEngine->DefineObj(CJS_Icon::g_pClassName, eObjType,
-                         JSConstructor<CJS_Icon, Icon>, JSDestructor<CJS_Icon>);
+  g_nObjDefnID = pEngine->DefineObj(
+      "Icon", eObjType, JSConstructor<CJS_Icon, Icon>, JSDestructor<CJS_Icon>);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
 }
 
diff --git a/fpdfsdk/javascript/Icon.h b/fpdfsdk/javascript/Icon.h
index 2d5ad8c..3580183 100644
--- a/fpdfsdk/javascript/Icon.h
+++ b/fpdfsdk/javascript/Icon.h
@@ -31,7 +31,6 @@
   explicit CJS_Icon(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Icon() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSPropertySpec PropertySpecs[];
 
diff --git a/fpdfsdk/javascript/app.cpp b/fpdfsdk/javascript/app.cpp
index 0b331a8..ceafb8f 100644
--- a/fpdfsdk/javascript/app.cpp
+++ b/fpdfsdk/javascript/app.cpp
@@ -142,12 +142,11 @@
   return s_TimerMap;
 }
 
-const char* CJS_TimerObj::g_pClassName = "TimerObj";
 int CJS_TimerObj::g_nObjDefnID = -1;
 
 void CJS_TimerObj::DefineJSObjects(CFXJS_Engine* pEngine,
                                    FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_TimerObj::g_pClassName, eObjType,
+  g_nObjDefnID = pEngine->DefineObj("TimerObj", eObjType,
                                     JSConstructor<CJS_TimerObj, TimerObj>,
                                     JSDestructor<CJS_TimerObj>);
 }
@@ -211,13 +210,11 @@
                                        {"setTimeOut", setTimeOut_static},
                                        {0, 0}};
 
-const char* CJS_App::g_pClassName = "app";
 int CJS_App::g_nObjDefnID = -1;
 
 void CJS_App::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID =
-      pEngine->DefineObj(CJS_App::g_pClassName, eObjType,
-                         JSConstructor<CJS_App, app>, JSDestructor<CJS_App>);
+  g_nObjDefnID = pEngine->DefineObj(
+      "app", eObjType, JSConstructor<CJS_App, app>, JSDestructor<CJS_App>);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
   DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
 }
diff --git a/fpdfsdk/javascript/app.h b/fpdfsdk/javascript/app.h
index 454bb42..a034430 100644
--- a/fpdfsdk/javascript/app.h
+++ b/fpdfsdk/javascript/app.h
@@ -33,7 +33,6 @@
   explicit CJS_TimerObj(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_TimerObj() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
 
   static void DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType);
@@ -146,7 +145,6 @@
   explicit CJS_App(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_App() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSPropertySpec PropertySpecs[];
   static JSMethodSpec MethodSpecs[];
diff --git a/fpdfsdk/javascript/cjs_annot.cpp b/fpdfsdk/javascript/cjs_annot.cpp
index 9f528a3..af0d208 100644
--- a/fpdfsdk/javascript/cjs_annot.cpp
+++ b/fpdfsdk/javascript/cjs_annot.cpp
@@ -25,13 +25,12 @@
     {"type", get_type_static, set_type_static},
     {0, 0, 0}};
 
-const char* CJS_Annot::g_pClassName = "Annot";
 int CJS_Annot::g_nObjDefnID = -1;
 
 void CJS_Annot::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Annot::g_pClassName, eObjType,
-                                    JSConstructor<CJS_Annot, Annot>,
-                                    JSDestructor<CJS_Annot>);
+  g_nObjDefnID =
+      pEngine->DefineObj("Annot", eObjType, JSConstructor<CJS_Annot, Annot>,
+                         JSDestructor<CJS_Annot>);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
 }
 
diff --git a/fpdfsdk/javascript/cjs_annot.h b/fpdfsdk/javascript/cjs_annot.h
index a16e510..147642f 100644
--- a/fpdfsdk/javascript/cjs_annot.h
+++ b/fpdfsdk/javascript/cjs_annot.h
@@ -35,7 +35,6 @@
   explicit CJS_Annot(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Annot() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSPropertySpec PropertySpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_border.cpp b/fpdfsdk/javascript/cjs_border.cpp
index 6bb2e09..038606f 100644
--- a/fpdfsdk/javascript/cjs_border.cpp
+++ b/fpdfsdk/javascript/cjs_border.cpp
@@ -14,11 +14,9 @@
     {"u", JSConstSpec::String, 0, "underline"},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_Border::g_pClassName = "border";
 int CJS_Border::g_nObjDefnID = -1;
 
 void CJS_Border::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID =
-      pEngine->DefineObj(CJS_Border::g_pClassName, eObjType, nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("border", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_border.h b/fpdfsdk/javascript/cjs_border.h
index 26a710a..733fbc0 100644
--- a/fpdfsdk/javascript/cjs_border.h
+++ b/fpdfsdk/javascript/cjs_border.h
@@ -14,7 +14,6 @@
   explicit CJS_Border(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Border() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_display.cpp b/fpdfsdk/javascript/cjs_display.cpp
index 5d604b5..afb060b 100644
--- a/fpdfsdk/javascript/cjs_display.cpp
+++ b/fpdfsdk/javascript/cjs_display.cpp
@@ -12,11 +12,9 @@
                                          {"noView", JSConstSpec::Number, 3, 0},
                                          {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_Display::g_pClassName = "display";
 int CJS_Display::g_nObjDefnID = -1;
 
 void CJS_Display::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID =
-      pEngine->DefineObj(CJS_Display::g_pClassName, eObjType, nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("display", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_display.h b/fpdfsdk/javascript/cjs_display.h
index 61e741d..439525f 100644
--- a/fpdfsdk/javascript/cjs_display.h
+++ b/fpdfsdk/javascript/cjs_display.h
@@ -14,7 +14,6 @@
   explicit CJS_Display(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Display() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_font.cpp b/fpdfsdk/javascript/cjs_font.cpp
index 0a9f02f..889c0bb 100644
--- a/fpdfsdk/javascript/cjs_font.cpp
+++ b/fpdfsdk/javascript/cjs_font.cpp
@@ -23,11 +23,9 @@
     {"ZapfD", JSConstSpec::String, 0, "ZapfDingbats"},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_Font::g_pClassName = "font";
 int CJS_Font::g_nObjDefnID = -1;
 
 void CJS_Font::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID =
-      pEngine->DefineObj(CJS_Font::g_pClassName, eObjType, nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("font", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_font.h b/fpdfsdk/javascript/cjs_font.h
index 7881cdf..569e4f1 100644
--- a/fpdfsdk/javascript/cjs_font.h
+++ b/fpdfsdk/javascript/cjs_font.h
@@ -14,7 +14,6 @@
   explicit CJS_Font(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Font() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_global.cpp b/fpdfsdk/javascript/cjs_global.cpp
index 1ec9bbf..95782ac 100644
--- a/fpdfsdk/javascript/cjs_global.cpp
+++ b/fpdfsdk/javascript/cjs_global.cpp
@@ -182,7 +182,6 @@
     {"setPersistent", setPersistent_static},
     {0, 0}};
 
-const char* CJS_Global::g_pClassName = "global";
 int CJS_Global::g_nObjDefnID = -1;
 
 // static
@@ -232,8 +231,8 @@
 
 void CJS_Global::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
   g_nObjDefnID = pEngine->DefineObj(
-      CJS_Global::g_pClassName, eObjType,
-      JSConstructor<CJS_Global, JSGlobalAlternate>, JSDestructor<CJS_Global>);
+      "global", eObjType, JSConstructor<CJS_Global, JSGlobalAlternate>,
+      JSDestructor<CJS_Global>);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
   DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
diff --git a/fpdfsdk/javascript/cjs_global.h b/fpdfsdk/javascript/cjs_global.h
index 8174418..e5eb3aa 100644
--- a/fpdfsdk/javascript/cjs_global.h
+++ b/fpdfsdk/javascript/cjs_global.h
@@ -17,7 +17,6 @@
   // CJS_Object
   void InitInstance(IJS_Runtime* pIRuntime) override;
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
   static JSPropertySpec PropertySpecs[];
diff --git a/fpdfsdk/javascript/cjs_highlight.cpp b/fpdfsdk/javascript/cjs_highlight.cpp
index 5a5f7bf..edee548 100644
--- a/fpdfsdk/javascript/cjs_highlight.cpp
+++ b/fpdfsdk/javascript/cjs_highlight.cpp
@@ -13,12 +13,10 @@
     {"o", JSConstSpec::String, 0, "outline"},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_Highlight::g_pClassName = "highlight";
 int CJS_Highlight::g_nObjDefnID = -1;
 
 void CJS_Highlight::DefineJSObjects(CFXJS_Engine* pEngine,
                                     FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Highlight::g_pClassName, eObjType,
-                                    nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("highlight", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_highlight.h b/fpdfsdk/javascript/cjs_highlight.h
index dd16e0c..cc77660 100644
--- a/fpdfsdk/javascript/cjs_highlight.h
+++ b/fpdfsdk/javascript/cjs_highlight.h
@@ -14,7 +14,6 @@
   explicit CJS_Highlight(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Highlight() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_position.cpp b/fpdfsdk/javascript/cjs_position.cpp
index 46b908b..f24c2d9 100644
--- a/fpdfsdk/javascript/cjs_position.cpp
+++ b/fpdfsdk/javascript/cjs_position.cpp
@@ -16,12 +16,10 @@
     {"overlay", JSConstSpec::Number, 6, 0},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_Position::g_pClassName = "position";
 int CJS_Position::g_nObjDefnID = -1;
 
 void CJS_Position::DefineJSObjects(CFXJS_Engine* pEngine,
                                    FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Position::g_pClassName, eObjType,
-                                    nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("position", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_position.h b/fpdfsdk/javascript/cjs_position.h
index f180af4..a1850ec 100644
--- a/fpdfsdk/javascript/cjs_position.h
+++ b/fpdfsdk/javascript/cjs_position.h
@@ -14,7 +14,6 @@
   explicit CJS_Position(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Position() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_scalehow.cpp b/fpdfsdk/javascript/cjs_scalehow.cpp
index d593d83..8fafdd4 100644
--- a/fpdfsdk/javascript/cjs_scalehow.cpp
+++ b/fpdfsdk/javascript/cjs_scalehow.cpp
@@ -11,12 +11,10 @@
     {"anamorphic", JSConstSpec::Number, 1, 0},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_ScaleHow::g_pClassName = "scaleHow";
 int CJS_ScaleHow::g_nObjDefnID = -1;
 
 void CJS_ScaleHow::DefineJSObjects(CFXJS_Engine* pEngine,
                                    FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_ScaleHow::g_pClassName, eObjType,
-                                    nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("scaleHow", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_scalehow.h b/fpdfsdk/javascript/cjs_scalehow.h
index 2d3906e..36c5fb3 100644
--- a/fpdfsdk/javascript/cjs_scalehow.h
+++ b/fpdfsdk/javascript/cjs_scalehow.h
@@ -14,7 +14,6 @@
   explicit CJS_ScaleHow(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_ScaleHow() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_scalewhen.cpp b/fpdfsdk/javascript/cjs_scalewhen.cpp
index 129a150..82a4541 100644
--- a/fpdfsdk/javascript/cjs_scalewhen.cpp
+++ b/fpdfsdk/javascript/cjs_scalewhen.cpp
@@ -13,12 +13,10 @@
     {"tooSmall", JSConstSpec::Number, 3, 0},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_ScaleWhen::g_pClassName = "scaleWhen";
 int CJS_ScaleWhen::g_nObjDefnID = -1;
 
 void CJS_ScaleWhen::DefineJSObjects(CFXJS_Engine* pEngine,
                                     FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_ScaleWhen::g_pClassName, eObjType,
-                                    nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("scaleWhen", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_scalewhen.h b/fpdfsdk/javascript/cjs_scalewhen.h
index 72e8de1..1b64c0f 100644
--- a/fpdfsdk/javascript/cjs_scalewhen.h
+++ b/fpdfsdk/javascript/cjs_scalewhen.h
@@ -14,7 +14,6 @@
   explicit CJS_ScaleWhen(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_ScaleWhen() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_style.cpp b/fpdfsdk/javascript/cjs_style.cpp
index 5706413..66342f5 100644
--- a/fpdfsdk/javascript/cjs_style.cpp
+++ b/fpdfsdk/javascript/cjs_style.cpp
@@ -15,11 +15,9 @@
     {"sq", JSConstSpec::String, 0, "square"},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_Style::g_pClassName = "style";
 int CJS_Style::g_nObjDefnID = -1;
 
 void CJS_Style::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID =
-      pEngine->DefineObj(CJS_Style::g_pClassName, eObjType, nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("style", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_style.h b/fpdfsdk/javascript/cjs_style.h
index 2609f3e..0269bfe 100644
--- a/fpdfsdk/javascript/cjs_style.h
+++ b/fpdfsdk/javascript/cjs_style.h
@@ -14,7 +14,6 @@
   explicit CJS_Style(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Style() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/cjs_zoomtype.cpp b/fpdfsdk/javascript/cjs_zoomtype.cpp
index 8870776..d138381 100644
--- a/fpdfsdk/javascript/cjs_zoomtype.cpp
+++ b/fpdfsdk/javascript/cjs_zoomtype.cpp
@@ -16,12 +16,10 @@
     {"refW", JSConstSpec::String, 0, "ReflowWidth"},
     {0, JSConstSpec::Number, 0, 0}};
 
-const char* CJS_Zoomtype::g_pClassName = "zoomtype";
 int CJS_Zoomtype::g_nObjDefnID = -1;
 
 void CJS_Zoomtype::DefineJSObjects(CFXJS_Engine* pEngine,
                                    FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Zoomtype::g_pClassName, eObjType,
-                                    nullptr, nullptr);
+  g_nObjDefnID = pEngine->DefineObj("zoomtype", eObjType, nullptr, nullptr);
   DefineConsts(pEngine, g_nObjDefnID, ConstSpecs);
 }
diff --git a/fpdfsdk/javascript/cjs_zoomtype.h b/fpdfsdk/javascript/cjs_zoomtype.h
index e7dd7da..e7ba689 100644
--- a/fpdfsdk/javascript/cjs_zoomtype.h
+++ b/fpdfsdk/javascript/cjs_zoomtype.h
@@ -14,7 +14,6 @@
   explicit CJS_Zoomtype(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Zoomtype() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSConstSpec ConstSpecs[];
 
diff --git a/fpdfsdk/javascript/color.cpp b/fpdfsdk/javascript/color.cpp
index 0e05ddf..adc56d9 100644
--- a/fpdfsdk/javascript/color.cpp
+++ b/fpdfsdk/javascript/color.cpp
@@ -34,13 +34,12 @@
                                          {"equal", equal_static},
                                          {0, 0}};
 
-const char* CJS_Color::g_pClassName = "color";
 int CJS_Color::g_nObjDefnID = -1;
 
 void CJS_Color::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Color::g_pClassName, eObjType,
-                                    JSConstructor<CJS_Color, color>,
-                                    JSDestructor<CJS_Color>);
+  g_nObjDefnID =
+      pEngine->DefineObj("color", eObjType, JSConstructor<CJS_Color, color>,
+                         JSDestructor<CJS_Color>);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
   DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
 }
diff --git a/fpdfsdk/javascript/color.h b/fpdfsdk/javascript/color.h
index 5705787..0a97de0 100644
--- a/fpdfsdk/javascript/color.h
+++ b/fpdfsdk/javascript/color.h
@@ -88,7 +88,6 @@
   explicit CJS_Color(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Color() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSPropertySpec PropertySpecs[];
   static JSMethodSpec MethodSpecs[];
diff --git a/fpdfsdk/javascript/console.cpp b/fpdfsdk/javascript/console.cpp
index dbe8e32..0f5ca4e 100644
--- a/fpdfsdk/javascript/console.cpp
+++ b/fpdfsdk/javascript/console.cpp
@@ -20,11 +20,10 @@
                                            {"show", show_static},
                                            {0, 0}};
 
-const char* CJS_Console::g_pClassName = "console";
 int CJS_Console::g_nObjDefnID = -1;
 
 void CJS_Console::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Console::g_pClassName, eObjType,
+  g_nObjDefnID = pEngine->DefineObj("console", eObjType,
                                     JSConstructor<CJS_Console, console>,
                                     JSDestructor<CJS_Console>);
   DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
diff --git a/fpdfsdk/javascript/console.h b/fpdfsdk/javascript/console.h
index ca0c144..de1a40a 100644
--- a/fpdfsdk/javascript/console.h
+++ b/fpdfsdk/javascript/console.h
@@ -32,7 +32,6 @@
   explicit CJS_Console(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Console() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSMethodSpec MethodSpecs[];
 
diff --git a/fpdfsdk/javascript/event.cpp b/fpdfsdk/javascript/event.cpp
index 61aa546..9102bb6 100644
--- a/fpdfsdk/javascript/event.cpp
+++ b/fpdfsdk/javascript/event.cpp
@@ -36,13 +36,12 @@
     {"willCommit", get_will_commit_static, set_will_commit_static},
     {0, 0, 0}};
 
-const char* CJS_Event::g_pClassName = "event";
 int CJS_Event::g_nObjDefnID = -1;
 
 void CJS_Event::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Event::g_pClassName, eObjType,
-                                    JSConstructor<CJS_Event, event>,
-                                    JSDestructor<CJS_Event>);
+  g_nObjDefnID =
+      pEngine->DefineObj("event", eObjType, JSConstructor<CJS_Event, event>,
+                         JSDestructor<CJS_Event>);
   DefineProps(pEngine, g_nObjDefnID, PropertySpecs);
 }
 
diff --git a/fpdfsdk/javascript/event.h b/fpdfsdk/javascript/event.h
index 6974563..2a3ee3d 100644
--- a/fpdfsdk/javascript/event.h
+++ b/fpdfsdk/javascript/event.h
@@ -80,7 +80,6 @@
   explicit CJS_Event(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Event() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSPropertySpec PropertySpecs[];
 
diff --git a/fpdfsdk/javascript/report.cpp b/fpdfsdk/javascript/report.cpp
index eec6118..b702864 100644
--- a/fpdfsdk/javascript/report.cpp
+++ b/fpdfsdk/javascript/report.cpp
@@ -16,13 +16,12 @@
                                           {"writeText", writeText_static},
                                           {0, 0}};
 
-const char* CJS_Report::g_pClassName = "Report";
 int CJS_Report::g_nObjDefnID = -1;
 
 void CJS_Report::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(CJS_Report::g_pClassName, eObjType,
-                                    JSConstructor<CJS_Report, Report>,
-                                    JSDestructor<CJS_Report>);
+  g_nObjDefnID =
+      pEngine->DefineObj("Report", eObjType, JSConstructor<CJS_Report, Report>,
+                         JSDestructor<CJS_Report>);
   DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
 }
 
diff --git a/fpdfsdk/javascript/report.h b/fpdfsdk/javascript/report.h
index 13a6718..51798e6 100644
--- a/fpdfsdk/javascript/report.h
+++ b/fpdfsdk/javascript/report.h
@@ -28,7 +28,6 @@
   explicit CJS_Report(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Report() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSMethodSpec MethodSpecs[];
 
diff --git a/fpdfsdk/javascript/util.cpp b/fpdfsdk/javascript/util.cpp
index 75b0db3..00d7841 100644
--- a/fpdfsdk/javascript/util.cpp
+++ b/fpdfsdk/javascript/util.cpp
@@ -33,13 +33,11 @@
     {"printx", printx_static},         {"scand", scand_static},
     {"byteToChar", byteToChar_static}, {0, 0}};
 
-const char* CJS_Util::g_pClassName = "util";
 int CJS_Util::g_nObjDefnID = -1;
 
 void CJS_Util::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID =
-      pEngine->DefineObj(CJS_Util::g_pClassName, eObjType,
-                         JSConstructor<CJS_Util, util>, JSDestructor<CJS_Util>);
+  g_nObjDefnID = pEngine->DefineObj(
+      "util", eObjType, JSConstructor<CJS_Util, util>, JSDestructor<CJS_Util>);
   DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
 }
 
diff --git a/fpdfsdk/javascript/util.h b/fpdfsdk/javascript/util.h
index c3ede9a..cf54b15 100644
--- a/fpdfsdk/javascript/util.h
+++ b/fpdfsdk/javascript/util.h
@@ -47,7 +47,6 @@
   explicit CJS_Util(v8::Local<v8::Object> pObject) : CJS_Object(pObject) {}
   ~CJS_Util() override {}
 
-  static const char* g_pClassName;
   static int g_nObjDefnID;
   static JSMethodSpec MethodSpecs[];
 
