Hey there, I found the solution thanks to "andersca" in the IRC chatroom (#webkit on irc.freenode.net): The context's global object has the constructors as properties (e.g. this.Array). These can then be used in a call to JSValueIsInstanceOfConstructor().
Cheers, Marco > Hello, > > I'm looking for a way to find out if a given JSValueRef is, for example, an > Array or a Date. > I know that JSValueIsObjectOfClass() is the function I'm looking for, but > what I don't know is what I should pass in as the JSClassRef value if it's > not one of my own classes. I searched the JavaScriptCore public API, but > there doesn't seem to be a way to get a JSClassRef to the built-in classes. > Is there some other way to find the class of a given object? > > I tried the following approach, but that just doesn't seem right to me: > • Call JSGlobalContextCreate() > • Store a pointer to the prototype JSValueRef: > arrayPrototype = JSObjectGetPrototype(JSObjectMakeArray()) > • To check if an arbitrary JSObjectRef is an Array: > arrayPrototype == JSObjectGetPrototype(object) > > I'm using JavaScriptCore as it comes installed on OS X 10.8.2 (WebKit 4, if > I'm reading the headers right). > > > A little more detail about what I'm really trying to do: > I wrote some Objective-C classes that makes it easy for what I want to do. > I'm converting various JavaScript types to the appropriate Foundation classes > (Boolean/Number -> NSNumber, String -> NSString, …). > I'd also like to bridge arbitrary classes (that I'm writing the necessary > support code for). For example, if a JavaScript function returns an Array, > I'd like to convert it to an NSArray. If it returns an Error, I'd like to > convert it to an NSError. If it returns an MyJavaScriptFoo, I'd like to > convert it to an MyObjectiveCFoo. > For this to work, I must know that kind of JSObjectRef I'm getting. I simply > know that the JSType is kJSTypeObject, but there doesn't seem to be a way to > simply get the class of an object. > > > Thanks in advance, > > Marco _______________________________________________ webkit-help mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-help
