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
그렇게 객체를 얻으려고 시도했다 .
JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);
그러나 그것은 그것을 WorkerConstructor
객체에 추가하고 a new Worker()
가 호출되면 클래스를 사용할 수 없습니다.
1
귀하의 요구 사항에 대해 정확히 확신하지 못합니다. 하지만 작업자 파일에이 작업을 수행하는 하나의 스크립트를 포함 할 수 있다고 생각합니다. 이렇게. importScripts ( "globalWorker.js")
—
RAJESH
Worker 클래스를 전역 컨텍스트에 배치하고 있으므로 두 컨텍스트가 다르기 때문에 주 컨텍스트가 아닌 WebWorker의 컨텍스트에 추가해야합니다.
—
Karim H
새로 생성 된 클래스를
—
dectroo
Worker
클래스 정의 에 추가하려고합니다 . 일반적으로 클래스를 전역 객체와 새로 생성 된 JSVirtualMachine 내의 모든 전역 객체에 추가해야합니다. 글로벌 컨텍스트 및 글로벌 오브젝트 Worker
로 새 JSVirtualMachine
를 생성 합니다. 완전히 구분 environement