[webkit-dev] JavaScriptCore subclass native class created with JSClassCreate in javascript code

Geoffrey Garen ggaren at apple.com
Thu Oct 2 16:37:51 PDT 2014


…Yet another option is to insert Function.prototype into the TestClass prototype chain.

Geoff

> On Oct 2, 2014, at 4:37 PM, Geoffrey Garen <ggaren at apple.com> wrote:
> 
> You’ll need to manually copy Function.prototype.apply to the TestClass prototype.
> 
> Another option is “Function.prototype.apply.call(TestClass, this, arguments)”.
> 
> Geoff
> 
>> On Oct 2, 2014, at 8:26 AM, Moritz Moeller <mmoeller at mxs.de <mailto:mmoeller at mxs.de>> wrote:
>> 
>> Hi,
>> 
>> I’ve created a javascript class in native code (i.e. JSClassCreate, JSObjectMakeConstructor etc.) and want to subclass this class in javascript.
>> 
>> So pretty much:
>> 
>>     JSClassDefinition classDef = kJSClassDefinitionEmpty;
>>     classDef.className = "TestClass";
>>     classDef.getProperty = class_getProperty;
>>     classDef.setProperty = class_setProperty;
>>     JSClassRef classRef = JSClassCreate(&classDef);
>>     JSObjectRef constructor = JSObjectMakeConstructor(ctx, gClassRef, class_constructor);
>>     JSObjectSetProperty(ctx, JSContextGetGlobalObject(ctx), JsString("TestClass"), constructor, 0, NULL);
>> 
>> class_constructor does:
>>     return JSObjectMake(ctx, classRef, NULL);
>> 
>> This works, so I can do
>>     var test = new TestClass();
>>     test.field = 1;
>> 
>> and both class_constructor and class_setProperty is called.
>> 
>> Now I’m trying to subclass the TestClass:
>>     function SubClass()
>>     {
>>         TestClass.apply(this, arguments);
>>     }
>> 
>> here it already got the problem that TestClass - being a constructor - does not have .bind() or .apply().
>> 
>> Does someone know how to get this working?
>> 
>> Thank you very much,
>> 
>> Mo
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-dev/attachments/20141002/c7f768e9/attachment.html>


More information about the webkit-dev mailing list