diff --git a/fxjs/cfxjs_engine.cpp b/fxjs/cfxjs_engine.cpp
index 9ace436..03d41f4 100644
--- a/fxjs/cfxjs_engine.cpp
+++ b/fxjs/cfxjs_engine.cpp
@@ -199,8 +199,8 @@
   }
 
   void DefineProperty(v8::Local<v8::String> sPropName,
-                      v8::AccessorGetterCallback pPropGet,
-                      v8::AccessorSetterCallback pPropPut) {
+                      v8::AccessorNameGetterCallback pPropGet,
+                      v8::AccessorNameSetterCallback pPropPut) {
     GetInstanceTemplate()->SetAccessor(sPropName, pPropGet, pPropPut);
   }
 
@@ -435,8 +435,8 @@
 
 void CFXJS_Engine::DefineObjProperty(uint32_t nObjDefnID,
                                      const char* sPropName,
-                                     v8::AccessorGetterCallback pPropGet,
-                                     v8::AccessorSetterCallback pPropPut) {
+                                     v8::AccessorNameGetterCallback pPropGet,
+                                     v8::AccessorNameSetterCallback pPropPut) {
   v8::Isolate::Scope isolate_scope(GetIsolate());
   v8::HandleScope handle_scope(GetIsolate());
   FXJS_PerIsolateData* pIsolateData = FXJS_PerIsolateData::Get(GetIsolate());
diff --git a/fxjs/cfxjs_engine.h b/fxjs/cfxjs_engine.h
index 91ac103..55ca561 100644
--- a/fxjs/cfxjs_engine.h
+++ b/fxjs/cfxjs_engine.h
@@ -108,8 +108,8 @@
                        v8::FunctionCallback pMethodCall);
   void DefineObjProperty(uint32_t nObjDefnID,
                          const char* sPropName,
-                         v8::AccessorGetterCallback pPropGet,
-                         v8::AccessorSetterCallback pPropPut);
+                         v8::AccessorNameGetterCallback pPropGet,
+                         v8::AccessorNameSetterCallback pPropPut);
   void DefineObjAllProperties(
       uint32_t nObjDefnID,
       v8::GenericNamedPropertyQueryCallback pPropQurey,
diff --git a/fxjs/cjs_object.h b/fxjs/cjs_object.h
index d63fada..ccccee2 100644
--- a/fxjs/cjs_object.h
+++ b/fxjs/cjs_object.h
@@ -24,8 +24,8 @@
 
 struct JSPropertySpec {
   const char* pName;
-  v8::AccessorGetterCallback pPropGet;
-  v8::AccessorSetterCallback pPropPut;
+  v8::AccessorNameGetterCallback pPropGet;
+  v8::AccessorNameSetterCallback pPropPut;
 };
 
 struct JSMethodSpec {
diff --git a/fxjs/js_define.h b/fxjs/js_define.h
index f000bfa..579cf5e 100644
--- a/fxjs/js_define.h
+++ b/fxjs/js_define.h
@@ -68,7 +68,7 @@
 template <class C, CJS_Result (C::*M)(CJS_Runtime*)>
 void JSPropGetter(const char* prop_name_string,
                   const char* class_name_string,
-                  v8::Local<v8::String> property,
+                  v8::Local<v8::Name> property,
                   const v8::PropertyCallbackInfo<v8::Value>& info) {
   auto pObj = JSGetObject<C>(info.GetIsolate(), info.Holder());
   if (!pObj)
@@ -92,7 +92,7 @@
 template <class C, CJS_Result (C::*M)(CJS_Runtime*, v8::Local<v8::Value>)>
 void JSPropSetter(const char* prop_name_string,
                   const char* class_name_string,
-                  v8::Local<v8::String> property,
+                  v8::Local<v8::Name> property,
                   v8::Local<v8::Value> value,
                   const v8::PropertyCallbackInfo<void>& info) {
   auto pObj = JSGetObject<C>(info.GetIsolate(), info.Holder());
@@ -138,18 +138,18 @@
     info.GetReturnValue().Set(result.Return());
 }
 
-#define JS_STATIC_PROP(err_name, prop_name, class_name)           \
-  static void get_##prop_name##_static(                           \
-      v8::Local<v8::String> property,                             \
-      const v8::PropertyCallbackInfo<v8::Value>& info) {          \
-    JSPropGetter<class_name, &class_name::get_##prop_name>(       \
-        #err_name, class_name::kName, property, info);            \
-  }                                                               \
-  static void set_##prop_name##_static(                           \
-      v8::Local<v8::String> property, v8::Local<v8::Value> value, \
-      const v8::PropertyCallbackInfo<void>& info) {               \
-    JSPropSetter<class_name, &class_name::set_##prop_name>(       \
-        #err_name, class_name::kName, property, value, info);     \
+#define JS_STATIC_PROP(err_name, prop_name, class_name)         \
+  static void get_##prop_name##_static(                         \
+      v8::Local<v8::Name> property,                             \
+      const v8::PropertyCallbackInfo<v8::Value>& info) {        \
+    JSPropGetter<class_name, &class_name::get_##prop_name>(     \
+        #err_name, class_name::kName, property, info);          \
+  }                                                             \
+  static void set_##prop_name##_static(                         \
+      v8::Local<v8::Name> property, v8::Local<v8::Value> value, \
+      const v8::PropertyCallbackInfo<void>& info) {             \
+    JSPropSetter<class_name, &class_name::set_##prop_name>(     \
+        #err_name, class_name::kName, property, value, info);   \
   }
 
 #define JS_STATIC_METHOD(method_name, class_name)                            \
