Hi, Su Yes, this is the key point of the problem.
In my program, many Object use the same staticFunc entry[Program Architecture]. So, in the getValue_cb callback function, we need do extra two things: 1.Get the Object name, here is "myObject"; [WE CAN NOW] 2.Get the propertyName of the method, here is "getValues"; [WE CAN NOT NOW] After both get the Object and method's name, we can identify another callback function. Therefore, implement a way to get the propertyName of the method via 'function object' is needed. Thanks. -Xiong On Fri, May 15, 2009 at 3:28 PM, Zhe Su <[email protected]> wrote: > AFAIK, there is no way to achieve what you want by using staticFunc > structure. Of course, if you use different C functions for each staticFunc > entry, you actually don't need the name. > > Regards > James Su > > > On Fri, May 15, 2009 at 3:24 PM, Xiong <[email protected]> wrote: > >> Thanks Su. >> >> I think i know you mean. >> >> To get the method name ["getValue"] via attach a private data to function >> object which create by JSObjectMake(). >> >> Yes, it's a better way, but not for me. >> >> In my program, we have many Object and it's method and now all in >> staticFunc structure. >> >> Thanks again. >> >> -Xiong >> >> >> On Fri, May 15, 2009 at 11:57 AM, Zhe Su <[email protected]> wrote: >> >>> If you create a JSObject with JSObjectMake() function, you can have a >>> private data associated to the newly created JSObject. You can store >>> anything you want in the private data. So following approach might be >>> feasible for you: >>> >>> 1. define a special JSClass for your function, which has finalize and >>> callAsFunction set. In finalize() method, you need destroy the private data >>> associated to the JSObject, if necessary. callAsFunction points to your >>> getValue_cb. >>> 2. create the getValue function object by calling JSObjectMake() with the >>> function name "getValue" as private data. >>> 3. attach the function object to myObject with name "getValue". It might >>> be done in myObject class's initialize() method. >>> 4. in getValue_cb function you can retrieve the private data (which >>> contains the name) by calling JSObjectGetPrivate(function). >>> >>> The only drawback of this approach: you can't declare the function >>> statically in staticFunctions. >>> >>> Regards >>> James Su >>> >>> On Fri, May 15, 2009 at 10:53 AM, Xiong <[email protected]> wrote: >>> >>>> Thanks Darin. >>>> >>>> For the first problem, as you said, all the functions are objects, and >>>> also have **properties**. >>>> >>>> So,can we add a member for the "function object" to store the method >>>> name[here is "getValues"] in theoretical ? >>>> >>>> And this also like the "JSObjectRef object" variable in the callback >>>> prototype,we can get the class name like this: >>>> >>>> toJS(object)->className().data() >>>> >>>> Thanks. >>>> >>>> -Xiong >>>> >>>> >>>> On Fri, May 15, 2009 at 10:29 AM, Darin Adler <[email protected]> wrote: >>>> >>>>> On May 14, 2009, at 7:03 PM, Xiong wrote: >>>>> >>>>> 1 what is the purpose of the "JSObjectRef function" variable? In my >>>>>> case, we never use. >>>>>> >>>>> >>>>> It’s fine to not use this if you don’t need to. In JavaScript, >>>>> functions are objects. Like other objects they can have properties. This >>>>> argument is passed to your C implementation so that it can get access to >>>>> properties of the function object if it has some reason to. In many cases >>>>> there is no need to do this. >>>>> >>>>> 2 In this function, i want to get the propertyName of the method, >>>>>> in this case, we need "getValues", can be implemented ? >>>>>> >>>>> >>>>> No, there's no way to do that, for a good architectural reason. >>>>> >>>>> A JavaScript function is a first class object. Using JSObjectMake will >>>>> create an object with a prototype that has functions stored in its >>>>> properties, but there’s nothing to prevent the JavaScript program from >>>>> taking that function and storing it somewhere else, in a property with >>>>> another name. When the function is called, it’s just an object, and >>>>> there’s >>>>> no way to go back in time and find out where that object came from. >>>>> >>>>> Consider the similar situation of a data property. When you get the >>>>> length of an array, it's a number 1, not a number 1 that knows it came >>>>> from >>>>> a property named "length". >>>>> >>>>> -- Darin >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> webkit-dev mailing list >>>> [email protected] >>>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev >>>> >>>> >>> >> >
_______________________________________________ webkit-dev mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

