On Jan 7, 2009, at 11:50 AM, Martin Wengenmayer wrote:

Hi,
I'm want to embed the JavaScriptCore into my application but I have some problems. So far I only found the JSPong example for embedding which didn't answer my question.

I want to create a simple Vector3f class which can be used in scripts like the String or Array types. But I couldn't figure out how to set it up so that I can create objects with "new". I want the class to work like this example.

        var a = new Vector3f(0,1,0);
        var b = new Vector3f(1,1,1);
        
        var c = a.add(b);

Is that possible with JavaScriptCore?

Yes, it's possible. Here are the steps you need to take:

1) Create a Vector3f class using JSClassCreate.
2) Make a constructor for the Vector3f using JSObjectMakeConstructor, passing the class from step 1 and a function that uses JSObjectMake with the class to create the object. 3) Add the constructor from step 2 to the global namespace, using JSObjectSetProperty on the global object, which you can retrieve using JSContextGetGlobalObject.

After these 3 steps, JS code will see a global variable named Vector3f which holds your newly created constructor. At that point, your code using "new" should work.

Regards,
Maciej

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to