diff --git a/fpdfsdk/javascript/JS_Object.cpp b/fpdfsdk/javascript/JS_Object.cpp
index 0d190a7..8a4dc0f 100644
--- a/fpdfsdk/javascript/JS_Object.cpp
+++ b/fpdfsdk/javascript/JS_Object.cpp
@@ -75,26 +75,10 @@
   m_pV8Object.Reset();
 }
 
-FX_BOOL CJS_Object::IsType(const FX_CHAR* sClassName) {
-  return TRUE;
-}
-
-CFX_ByteString CJS_Object::GetClassName() {
-  return "";
-}
-
 void CJS_Object::InitInstance(IJS_Runtime* pIRuntime) {}
 
 void CJS_Object::ExitInstance() {}
 
-int CJS_Object::MsgBox(CPDFDoc_Environment* pApp,
-                       const FX_WCHAR* swMsg,
-                       const FX_WCHAR* swTitle,
-                       FX_UINT nType,
-                       FX_UINT nIcon) {
-  return FXJS_MsgBox(pApp, swMsg, swTitle, nType, nIcon);
-}
-
 void CJS_Object::Alert(CJS_Context* pContext, const FX_WCHAR* swMsg) {
   if (pContext->IsMsgBoxEnabled()) {
     CPDFDoc_Environment* pApp = pContext->GetReaderApp();
diff --git a/fpdfsdk/javascript/JS_Object.h b/fpdfsdk/javascript/JS_Object.h
index 7105ec6..146a7c9 100644
--- a/fpdfsdk/javascript/JS_Object.h
+++ b/fpdfsdk/javascript/JS_Object.h
@@ -46,9 +46,6 @@
   void MakeWeak();
   void Dispose();
 
-  virtual FX_BOOL IsType(const FX_CHAR* sClassName);
-  virtual CFX_ByteString GetClassName();
-
   virtual void InitInstance(IJS_Runtime* pIRuntime);
   virtual void ExitInstance();
 
@@ -58,11 +55,6 @@
   void SetEmbedObject(CJS_EmbedObj* pObj) { m_pEmbedObj.reset(pObj); }
   CJS_EmbedObj* GetEmbedObject() const { return m_pEmbedObj.get(); }
 
-  static int MsgBox(CPDFDoc_Environment* pApp,
-                    const FX_WCHAR* swMsg,
-                    const FX_WCHAR* swTitle,
-                    FX_UINT nType,
-                    FX_UINT nIcon);
   static void Alert(CJS_Context* pContext, const FX_WCHAR* swMsg);
 
   v8::Isolate* GetIsolate() { return m_pIsolate; }
