[webkit-dev] JSClassCreate & JSObjectSetProperty question
Jack Wootton
jackwootton at gmail.com
Thu May 28 01:59:35 PDT 2009
Hello Darin,
Thank you for your help. I have responded below and have 1 main
question at the end.
On Wed, May 27, 2009 at 9:23 PM, Darin Adler <darin at apple.com> wrote:
> On May 27, 2009, at 8:34 AM, Jack Wootton wrote:
>
>> I'm using JSObjectSetProperty.
>>
>> [...]
>>
>> I successfully have the execution context to use, the window
>> JSObjectRef, property name, attributes and use NULL for exception (all
>> these parameters make sense to me). However I'm unsure about the
>> purpose of the parameter 'JSValueRef value'.
>
> This function is used to set the property of a particular JavaScript object.
> To do this in JavaScript the syntax is:
>
> object.propertyName = value;
>
> The value is the new value to be stored in the JavaScript property.
>
>> (note I was
>> unable to use kJSClassDefinitionEmpty because of compile errors about
>> a missing symbol '_kJSClassDefinitionEmpty')
>
> What platform? Did you file a bug about this?
I am using the s60 webkit port. N I have not reported a bug about
this yet. I would like to ensure it is a bug before doing so.
>
>> JSClassDefinition globalObjectClassDefinition = { 0, 0, 0, 0, 0, 0, 0,
>> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
>> globalObjectClassDefinition.version = 1;
>> char myword[] = {'f', 'o', 'o', '\0' };
>> globalObjectClassDefinition.className = myword;
>>
>> Question 1. What is the class name? The documentation describes it
>> as "A null-terminated UTF8 string containing the class's name.".
>> However it does not mention what it's for, or what it represents
>> within the program. Is anyone able to elaborate please? Does it
>> represent a C class I've al;ready created, that I must describe by
>> using the JSClassDefinition?
>
> The class name is used for debugging purposes and for the default behavior
> of the toString function. If your name is "foo" then toString will yield
> "[object foo]".
Thank you for this clear explanation.
>
>> Question 2. I am unclear as to the purpose of the JSClassDefinition.
>> Does it represent a C class or a JavaScript class? Are the callbacks
>> to C / C++ functions?
>
> JSClassDefinition can be used to make a JSClassRef. A JSClassRef can be used
> to construct JavaScript objects with behavior that is implemented with C
> functions.
I understand the first part of your answer, but what i can't find it
how to specify which C functions should be"bound" to the JavaScript
functions. So for example, I add a new attribute to the window object
named "foo", and I add a method to foo, named "func1". This would
result in window.foo.func1(), or just foo.func1() (since the window
object does not need to be explicitly used). However I would like
foo() to call some C function, the functionality of func1() needs to
be implemented in C and a value returned to the JavaScript
environment. How I can i do this with JSObjectRef or the rest of the
JavaScriptCore API?
Many thanks,
Jack
>
> -- Darin
>
>
--
Regards
Jack
More information about the webkit-dev
mailing list