<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">You’ll need to manually copy Function.prototype.apply to the TestClass prototype.<div class=""><br class=""></div><div class="">Another option is “Function.prototype.apply.call(TestClass, this, arguments)”.<br class=""><div class=""><br class=""></div><div class="">Geoff</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Oct 2, 2014, at 8:26 AM, Moritz Moeller &lt;<a href="mailto:mmoeller@mxs.de" class="">mmoeller@mxs.de</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=windows-1252" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi,<div class=""><br class=""></div><div class="">I’ve created a javascript class in native code (i.e. JSClassCreate, JSObjectMakeConstructor etc.) and want to subclass this class in javascript.</div><div class=""><br class=""></div><div class="">So pretty much:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-size: 11px; font-family: Menlo; color: rgb(112, 61, 170);" class=""><span style="" class="">&nbsp; &nbsp;&nbsp;</span>JSClassDefinition<span style="" class="">&nbsp;classDef =&nbsp;</span>kJSClassDefinitionEmpty<span style="" class="">;</span></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp; classDef.<span style="color: rgb(112, 61, 170);" class="">className</span>&nbsp;=&nbsp;<span style="color: rgb(209, 47, 27);" class="">"TestClass"</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp; classDef.<span style="color: rgb(112, 61, 170);" class="">getProperty</span>&nbsp;=&nbsp;<span style="color: rgb(49, 89, 93);" class="">class_getProperty</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp; classDef.<span style="color: rgb(112, 61, 170);" class="">setProperty</span>&nbsp;=&nbsp;<span style="color: rgb(49, 89, 93);" class="">class_setProperty</span>;</div><div style="margin: 0px; font-size: 11px; font-family: Menlo; min-height: 13px;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(112, 61, 170);" class="">JSClassRef</span>&nbsp;classRef =&nbsp;<span style="color: rgb(61, 29, 129);" class="">JSClassCreate</span>(&amp;classDef);</div></div><div class=""><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(112, 61, 170);" class="">JSObjectRef</span>&nbsp;constructor = JSObjectMakeConstructor(ctx, gClassRef, class_constructor);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(61, 29, 129);" class="">JSObjectSetProperty</span>(ctx,&nbsp;<span style="color: rgb(61, 29, 129);" class="">JSContextGetGlobalObject</span>(ctx),&nbsp;<span style="color: rgb(79, 129, 135);" class="">JsString</span>(<span style="color: rgb(209, 47, 27);" class="">"TestClass"</span>), constructor,&nbsp;<span style="color: rgb(39, 42, 216);" class="">0</span>,&nbsp;<span style="color: rgb(187, 44, 162);" class="">NULL</span>);</div></div><div class=""><br class=""></div><div class="">class_constructor does:</div><div class=""><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(187, 44, 162);" class="">return</span>&nbsp;<span style="color: rgb(61, 29, 129);" class="">JSObjectMake</span>(ctx,&nbsp;classRef,&nbsp;<span style="color: rgb(187, 44, 162);" class="">NULL</span>);</div></div><div class=""><br class=""></div><div class="">This works, so I can do</div><div class=""><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(187, 44, 162);" class="">var</span>&nbsp;test =&nbsp;<span style="color: rgb(187, 44, 162);" class="">new</span>&nbsp;TestClass();</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp; test.field =&nbsp;<span style="color: rgb(39, 42, 216);" class="">1</span>;</div></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class=""><br class=""></div><div class="">and both class_constructor and class_setProperty is called.</div><div class=""><br class=""></div><div class="">Now I’m trying to subclass the TestClass:</div><div class=""><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp;&nbsp;<span style="color: rgb(187, 44, 162);" class="">function</span>&nbsp;SubClass()</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp; {</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp; &nbsp; &nbsp; TestClass.apply(<span style="color: rgb(187, 44, 162);" class="">this</span>, arguments);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;" class="">&nbsp; &nbsp; }</div></div><div class=""><br class=""></div><div class="">here it already got the problem that TestClass - being a constructor - does not have .bind() or .apply().</div><div class=""><br class=""></div><div class="">Does someone know how to get this working?</div><div class=""><br class=""></div><div class="">Thank you very much,</div><div class=""><br class=""></div><div class="">Mo</div></div>_______________________________________________<br class="">webkit-dev mailing list<br class=""><a href="mailto:webkit-dev@lists.webkit.org" class="">webkit-dev@lists.webkit.org</a><br class="">https://lists.webkit.org/mailman/listinfo/webkit-dev<br class=""></div></blockquote></div><br class=""></div></div></body></html>