在JavaScriptCore中的WebWorker上下文中添加一个新的本机类

我有一个在webkit-gtk浏览器中通过JavaScriptCore扩展JavaScript的应用程序。 现在我有几个类,我添加到全局上下文,如下所示:

void create_js(gpointer context, char* className, JSClassDefinition clasDefinition) { JSClassRef classDef = JSClassCreate(&clasDefinition); JSObjectRef classObj = JSObjectMake(context, classDef, context); JSObjectRef globalObj = JSContextGetGlobalObject(context); JSStringRef str = JSStringCreateWithUTF8CString(className); JSObjectSetProperty(context, globalObj, str, classObj, kJSPropertyAttributeNone, NULL); JSStringRelease(str); } 

现在,我还想将这些类添加到WebWorker的上下文中,所以我可以从JS中实例化的worker中调用它们。

我试过让Worker对象如下所示:

 JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker"); JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL); JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL); JSStringRelease(workerStr); 

但是,它将其添加到WorkerConstructor对象,并且当一个new Worker()被调用时,这些类不可用。