Cleanup statics in JS classes

This CL removes the static object IDs from each of the CJS_Object
subclasses and moves them to anonymous namespaces. The Spec arrays are
moved to private members of the object classes.

Change-Id: I5dcdb87ef57e4b374b5431580fb55cb75023f8fb
Reviewed-on: https://pdfium-review.googlesource.com/16950
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/fpdfsdk/javascript/util.cpp b/fpdfsdk/javascript/util.cpp
index 00d7841..6ff9f05 100644
--- a/fpdfsdk/javascript/util.cpp
+++ b/fpdfsdk/javascript/util.cpp
@@ -28,19 +28,6 @@
 #include <ctype.h>
 #endif
 
-JSMethodSpec CJS_Util::MethodSpecs[] = {
-    {"printd", printd_static},         {"printf", printf_static},
-    {"printx", printx_static},         {"scand", scand_static},
-    {"byteToChar", byteToChar_static}, {0, 0}};
-
-int CJS_Util::g_nObjDefnID = -1;
-
-void CJS_Util::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
-  g_nObjDefnID = pEngine->DefineObj(
-      "util", eObjType, JSConstructor<CJS_Util, util>, JSDestructor<CJS_Util>);
-  DefineMethods(pEngine, g_nObjDefnID, MethodSpecs);
-}
-
 namespace {
 
 // Map PDF-style directives to equivalent wcsftime directives. Not
@@ -71,6 +58,20 @@
 
 }  // namespace
 
+JSMethodSpec CJS_Util::MethodSpecs[] = {
+    {"printd", printd_static},         {"printf", printf_static},
+    {"printx", printx_static},         {"scand", scand_static},
+    {"byteToChar", byteToChar_static}, {0, 0}};
+
+int CJS_Util::ObjDefnID = -1;
+
+// static
+void CJS_Util::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
+  ObjDefnID = pEngine->DefineObj(
+      "util", eObjType, JSConstructor<CJS_Util, util>, JSDestructor<CJS_Util>);
+  CJS_Object::DefineMethods(pEngine, ObjDefnID, MethodSpecs);
+}
+
 util::util(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
 
 util::~util() {}