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

