मेरे पास एक एप्लिकेशन है जो एक वेबकिट-जीईके ब्राउज़र में जावास्क्रिप्ट को जावास्क्रिप्ट के माध्यम से बढ़ाता है। अभी मेरे पास कई वर्ग हैं जिन्हें मैं वैश्विक संदर्भ में जोड़ता हूं जैसे:
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);
}
अब, मैं उन वर्गों को वेबवर्क के संदर्भ में भी जोड़ना चाहूंगा, इसलिए मैं उन्हें JS में तुरंत काम करने वाले कर्मचारियों से बुला सकता हूं।
मैंने इस Worker
तरह वस्तु प्राप्त करने की कोशिश की है:
JSStringRef workerStr = JSStringCreateWithUTF8CString("Worker");
JSObjectRef worker = JSObjectGetProperty(context, globalObj, workerStr, NULL);
JSObjectSetProperty(context, worker, str, classObj, kJSPropertyAttributeNone, NULL);
JSStringRelease(workerStr);
लेकिन वह इसे WorkerConstructor
ऑब्जेक्ट में जोड़ता है , और जब ए new Worker()
कहा जाता है, तो कक्षाएं उपलब्ध नहीं हैं।
Worker
वर्ग परिभाषा में जोड़ने का प्रयास कर रहे हैं । आम तौर पर आपको अपनी कक्षा को ग्लोबल ऑब्जेक्ट और प्रत्येक ग्लोबल ऑब्जेक्ट में एक नए बनाए गए JSVirtualMachine में जोड़ना होगा। यह वैश्विक संदर्भ और वैश्विक वस्तु के साथ Worker
एक नया सृजन करेगा JSVirtualMachine
; एक पूरी तरह से अलग