Re: Retrun value type information on scripting
"Johnson Lau" <laozhongcheng@hotmail.com> wrote in message
news:eQE$VTd6IHA.2336@TK2MSFTNGP03.phx.gbl
I want to convert JS array into a SAFEARRAY before I pass it
to the C++ program, but I don't know how to
determine type of the return data, which may be
internal data(number, boolean) and also Array in JS.
I like to perform checking the type through typeof /
instanceof operator in JS
typeof isn't helpful: typeof([]) returns "object". I don't know of any
way to simulate instanceof in C++: it requires access to the object's
prototype chain, and as far as I can tell JavaScript engine doesn't
expose it.
You could use a heuristic: if the object has length property, as well as
methods like push, pop, sort or join, then chances are high it's an
array. You can check for the presence of properties and methods with
IDispatch::GetIdsOfNames.
but I don't know
how to get the right DISPID (I succeeded in getting
the DISPID of a method defined in the web page,
but failed on "typeof")
typeof is not a method, it's an operator in the language - in the same
way as, say, '+' is an operator. There's no DISPID for '+' either.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925