diff --git a/source/scriptinterface/ScriptInterface.cpp b/source/scriptinterface/ScriptInterface.cpp index fb84420abe..ee3e766ffc 100644 --- a/source/scriptinterface/ScriptInterface.cpp +++ b/source/scriptinterface/ScriptInterface.cpp @@ -370,6 +370,18 @@ bool ScriptInterface::GetProperty_(jsval obj, const char* name, jsval& out) return true; } +bool ScriptInterface::HasProperty(jsval obj, const char* name) +{ + if (! JSVAL_IS_OBJECT(obj)) + return false; + JSObject* object = JSVAL_TO_OBJECT(obj); + + JSBool found; + if (!JS_HasProperty(m->m_cx, object, name, &found)) + return false; + return (found != JS_FALSE); +} + bool ScriptInterface::EnumeratePropertyNamesWithPrefix(jsval obj, const char* prefix, std::vector& out) { LOCAL_ROOT_SCOPE; diff --git a/source/scriptinterface/ScriptInterface.h b/source/scriptinterface/ScriptInterface.h index e168d2d215..6235aa0128 100644 --- a/source/scriptinterface/ScriptInterface.h +++ b/source/scriptinterface/ScriptInterface.h @@ -130,6 +130,8 @@ public: template bool GetProperty(jsval obj, const char* name, T& out); + bool HasProperty(jsval obj, const char* name); + bool EnumeratePropertyNamesWithPrefix(jsval obj, const char* prefix, std::vector& out); bool SetPrototype(jsval obj, jsval proto);