> I will be reviewing prtotype's Class.create to see if we cannot achieve
> the same result with an anonymous function, for which Firefox JS engine
> *does not* expose anything in the name slot (I already tested this).

Yes it does; it exposes a blank string:

function go()
{
    var f;

    f = function() { return 5; };

    alert("typeof f.name == " + typeof f.name);
}

...alerts "typeof f.name == string" not "typeof f.name == undefined".

And the property is still read-only:

function go()
{
    var f;

    f = function() { return 5; };

    alert("f.name (1) == " + f.name);

    f.name = "flibbergibbett";

    alert("f.name (2) == " + f.name);
}

The second alert still shows the name as a blank string.
--
T.J. Crowder
tj / crowder software / com

On Jun 9, 5:50 am, Franck PORCHER <[EMAIL PROTECTED]> wrote:
> Yes Jeff, I'm using Firefox (Linux & FreeBSD plat-forms).
>
> And peering at the source code, one can see that Class.create() defines
> an explicit klass() function, hence the 'klass' display.
>
> Apparently, this property in not mutable. Something of a pain :-[
>
> I will be reviewing prtotype's Class.create to see if we cannot achieve
> the same result with an anonymous function, for which Firefox JS engine
> *does not* expose anything in the name slot (I already tested this).
>
> Franck
>
> Franck Porcher, Docteur ès Sciences (Paris VI), Informatique théorique
>
> ----------------------------------------------------------------------
> SMART Technologies                         Les solutions intelligentes
> ----------------------------------------------------------------------
> Société de Services et d'Ingénierie en Informatique
> Solutions Open Source Linux & FreeBSD
> 1995-2008 : Premier fournisseur en Polynésie française
>
> Tél:      (689) 711 911
> Email:    fporcher(at)smartech(dot)pf
> Web:      www(dot)smartech(dot)pf
> ----------------------------------------------------------------------
> "You can analyze the past but you have to design the future."
>
> Jeff Watkins wrote:
> > Off the top of my head, I'd guess you're using FireFox. I know the JS
> > engine in FireFox (SpiderMonkey) exposes the name of a function via
> > the `name` property, however, I don't know whether that property is
> > mutable.
>
> > My guess, from the behaviour of your code, is `name` is not a mutable
> > property.
>
> > On 8 Jun, 2008, at 9:06 PM, Franck PORCHER wrote:
>
> >> Hello,
>
> >> I have been trying for days o understand what I have missed.
>
> >> I have narrowed down the problem to this, where I create a simple
> >> class 'foo' that I extend to assign a private member 'name' set to 'FOO':
>
> >>    var foo = Class.create({});
>
> >>    Object.extend( foo, {  name : 'FOO' } );
>
> >> Then :
>
> >>    alert(foo.name)
>
> >> surprisingly displays
>
> >>    klass
>
> >> (instead of FOO)
>
> >> Samething if I explicitely force the value to 'FOO'
>
> >>    foo.name = 'FOO'
>
> >> Is there someone in the position to tell me what is going on, and why
> >> foo's private member 'name' does not hold its value. This does not
> >> happen if I choose another name for the private member.
>
> >> This has been most upsetting to me for days now, and I fail to
> >> understand what I am missing.
>
> >> So thank you to anyone who would help me understand my mistake if
> >> this is not a bug.
>
> >> Franck PORCHER
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to