When you say: > function PureClass(){}; > var wow = new PureClass(); > wow.constructor; // and I would get PureClass
What you really mean is that, in Firebug, you get the string: "PureClass()" displayed, correct? That's because Firebug takes advantages of the non-standard `name` property of function objects implemented by Firefox. This property gets populated with the name of the function declaration. It's specification in ES 3.1 is currently being discussed[1]. I suppose that your main concern is for debugging purposes, isn't that correct? You might be interested in reading kangax's post[2] on a related subject, which could solve part of your problem. If not, you can use uglier solutions (as long as you know the namespace in which you've declared your classes): function inspect(klass) { var namespace = window; // or myLib or whatever for (var prop in namespace) { if (namespace[prop] === klass) { return prop; } } throw "Can't find class in " + namespace; } Best, Tobie [1] https://mail.mozilla.org/pipermail/es-discuss/2009-March/008905.html [2] http://thinkweb2.com/projects/prototype/semantic-constructors/ On Mar 9, 1:58 am, "dzw!" <bartoszw...@googlemail.com> wrote: > Tobie, thanks for answer it is helpful but still what I am looking for > is practical advice how do you handle it in Prototype. > > Just to clarify: > > //this is what I would do without using Prototype > > function PureClass(){}; > var wow = new PureClass(); > wow.constructor; // and I would get PureClass > > // in Prototype the same > > var PureClassPrototype = Class.create(); > var wow_prototype = new PureClassPrototype(); > wow_prototype.constructor; // here I get not very helpfull klass() - > ok it is helpfull and much better than nothing :) > wow_prototype.constructor == PureClassPrototype; // true > > So I am maybe wrong but in JS I get what I want, but in Prototype my > guess is that there is some other way[i have few ideas how to go > around that but I am quite sure It is already solved].. > > Or if I am going in very bad direction and what I am trying is > useless,stupid etc .. please let me know.. :) > > Same is for e.g with Class.subclasses , I got Array of [ klass(), klass > () ] and than all I can do is '==' against Something, what I am > looking for is to have in that case array of [Something, > SomethingElse ] > > Thanks > > dzw! > > On Mar 9, 1:08 am, Tobie Langel <tobie.lan...@gmail.com> wrote: > > > Hi, > > > JavaScript, as a language doesn't have the self-reflexiveness you are > > looking for. > > > There are different hacks to find this kind of information, but imho > > they go against the dynamic and prototypical nature of the language. > > > When you do: > > > var Foo = Class.create({}); > > > what you are actually doing is creating a constructor (a function > > declaration contained in the closure created by Class.create), which > > you then assign to the "Foo" variable. (In prototype, that constructor > > happens to be called "klass", but it could be called anything else, > > that wouldn't change anything). > > > It would now be very well possible to do: > > > var Bar = Foo; > > > and use: > > > new Bar(); > > > to create a new "Foo" object. > > > If the classes you create are in the global scope, you can always > > iterate over the global object (window, or this) to find the name of > > the variable that points to your constructor object. But apart from > > debugging purposes, there is little use for that. > > > Hope this clarifies your issue. > > > Best, > > > Tobie > > > On Mar 8, 12:19 pm, "dzw!" <bartoszw...@googlemail.com> wrote: > > > > Houston, new Prototype user has a problem: > > > > var SimpleClass = Class.create({}) > > > var xxx = new SimpleClass(); > > > > xxx.constructor == SimpleClass // i got true > > > > xxx.constructor // i got klass() > > > > So what I am looking is: how to get the constructor name? the same is > > > with Prototype's superclass and subclasses.. I tried to google it but > > > with no success. > > > > Any hint? What is about that "klass()" thing? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---