JavaScriptCore aracılığıyla bir webkit-gtk tarayıcısında JavaScript'i genişleten bir uygulamam var. Şu anda küresel bağlama eklediğim birkaç sınıfım var:
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);
}
Şimdi, bu sınıfları WebWorker'ın bağlamına da eklemek istiyorum, böylece onları JS'de örneklenen işçilerden çağırabilirim.
Worker
Nesneyi şu şekilde almayı denedim :
JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);
Ancak bu onu WorkerConstructor
nesneye ekler ve a new Worker()
çağrıldığında sınıflar kullanılamaz.