JSValueRef JSCallbackFunction::toStringCallback(JSContextRef ctx, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef* exception) { JSObject* object = toJS(thisObject); if (object->inherits(&JSCallbackObject<JSNonFinalObject>::s_info)) { for (JSClassRef jsClass = jsCast<JSCallbackObject<JSNonFinalObject>*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) if (jsClass->convertToType) return jsClass->convertToType(ctx, thisObject, kJSTypeString, exception); } else if (object->inherits(&JSCallbackObject<JSGlobalObject>::s_info)) { for (JSClassRef jsClass = jsCast<JSCallbackObject<JSGlobalObject>*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) if (jsClass->convertToType) return jsClass->convertToType(ctx, thisObject, kJSTypeString, exception); } return 0; }