Re: How i get a method of object ( like IntelliSense )

24 views
Skip to first unread message
Message has been deleted
Message has been deleted

kosit la-orngsri

unread,
Jun 28, 2020, 6:19:55 AM6/28/20
to v8-users

ขอบคุณมีอะไรใหม่แนะนําด้วย
ในวันที่ วันอาทิตย์ที่ 28 มิถุนายน ค.ศ. 2020 เวลา 16 นาฬิกา 46 นาที 15 วินาที UTC+7 oreng...@gmail.com เขียนว่า:
+ also call ShowProp("AA") & ShowProp("user)

void ShowProp(const char * name)
{
v8::Local<v8::Value> val = v8::String::NewFromUtf8(m_Isolate, name);
Local<Object> obj = val->ToObject(m_Context).ToLocalChecked();
MaybeLocal<Array>  bb = obj->GetPropertyNames(m_Context);

if (!bb.IsEmpty())
{
Local<Array>  arr = bb.ToLocalChecked();
int len = arr->Length();
for (uint32_t i = 0; i < len; ++i)
{
Local<Value> key = arr->Get(i);
Local<Value> val = obj->Get(m_Context, key).ToLocalChecked();

printProperty(val);
}
}
}

void printProperty(Local<Value> val)
{
if (val->IsName() || val->IsStringObject()) {
v8::String::Utf8Value str(m_Isolate, val);
std::string cppStr(*str);
OutputDebugStringA(cppStr.c_str());
}
else if (val->IsNumberObject())
{
Maybe<double> db = val->NumberValue(m_Context);
}
else if (val->IsFunction())
{
Handle<v8::Function> func = v8::Handle<v8::Function>::Cast(val);
if (func.IsEmpty())
return ;
}
else if (val->IsArray())
{
Handle<v8::Array> array = v8::Handle<v8::Array>::Cast(val);
int len = array->Length();
for (int i = 0; i < len; ++i)
{
const Handle<Value> key = array->Get(i);
printProperty(key);
}
}
else if (val->IsObject())
{
bool a = val->IsObject();
bool b = val->IsArgumentsObject();

Local<Object> obj = val->ToObject(m_Context).ToLocalChecked();
if (obj.IsEmpty())
return;
String::Utf8Value objascii(m_Isolate, obj);

Handle<Array> properties = obj->GetOwnPropertyNames(m_Context).ToLocalChecked();
int len = properties->Length();
if (len == 0)
return;

for (int i = 0; i < len; ++i)
{
const Handle<Value> key = properties->Get(i);
printProperty(key);
}
}
}





On Friday, June 26, 2020 at 2:52:23 PM UTC+3, Oren Gavriel wrote:
Hi
After I compile a js source with v8, I would like to get the method/member per request  
Any idea how to do it ?

For example for user i want to see : User & sayHi method and for AA i want to see the Z & b keys

const char * src= ("const AA = {Z: 5, b : 6 } ;  class User { User() {alert('con');} sayHi() {alert('hi');}}  let user = new User()");

Local<v8::String> source = v8::String::NewFromUtf8(m_Isolate, src);

// Compile the script and check for errors.
Local<Script> compiled_script;
if (!Script::Compile(m_Context, source).ToLocal(&compiled_script)){
}
...

Thanks
Oren 
Reply all
Reply to author
Forward
0 new messages