<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I&#8217;m not sure that there ever was a stated requirement that
Function.prototype.name yield the same value that appears in&nbsp; the
identifier position of a Function declaration/expression text produced by
toString.&nbsp; If that was to be the case,&nbsp; then name offers very little
added value as the identifier can be extracted from&nbsp; from&nbsp; the
toString value with a fairly simple RegExp.&nbsp;&nbsp; It always seemed to me
that the real utility of the proposed name property was to provide
additional&nbsp; descriptive information about functions that might be useful
for debugger.&nbsp; The underscored prefix does provide this except for the
obvious ambiguities with functions explicitly named in that manner. We did
discuss this at the MV meeting in the context of name bind functions and object
literal get/set functions and nobody seems concerned about the space in those
names.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>If we really want to establish a
Function.prototype.name/Function.prototype.toString invariant then we need to
also worry about what happens if Function.prototype.name is modified
(it&#8217;s [[Writable]]:true) and in particular if its value is set to a
non-string.&nbsp; Do you want toString to specify that it just uses ToString()
applied to the value of the name property?<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Last fall, we dropped Function.prototype.arguments because of
unresolved issues that were no more complex then these.&nbsp; Are we getting to
the same point here?<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Finally, I think the really important issue from an
interoperability perspective is the toString issues that Maciej pointed
out.&nbsp; Regardless of what we do with the name property I think we need to
better specify it for consistent interoperability and compatibility with the
existing web.&nbsp; I think the proposal for toString in my&nbsp; earlier
message addresses those concerns.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Allen<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Mark S. Miller
[mailto:erights@google.com] <br>
<b>Sent:</b> Tuesday, March 03, 2009 8:02 PM<br>
<b>To:</b> Allen Wirfs-Brock<br>
<b>Cc:</b> Brendan Eich; Maciej Stachowiak; es-discuss@mozilla.org<br>
<b>Subject:</b> Re: name property for built-in functions??<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>I like most of what you just proposed, except that I find it
surprising that a function's &quot;.name&quot; is not the identifier used by
&quot;.toString()&quot; on that function. This same issue just came up on an
internal list at Google: Objecting that since ES3.1 specs that the
&quot;.name&quot; for bound functions and literal getters and setters is not an
identifier, it would break .toString() if it were used in the identifier
position of a function's .toString().<o:p></o:p></p>

<div>

<div>

<p class=MsoNormal><br>
On Tue, Mar 3, 2009 at 7:35 PM, Allen Wirfs-Brock &lt;<a
href="mailto:Allen.Wirfs-Brock@microsoft.com">Allen.Wirfs-Brock@microsoft.com</a>&gt;
wrote:<o:p></o:p></p>

<p class=MsoNormal>A quick post-script. &nbsp;We could also give <a
href="http://function.prototype.name/" target="_blank">Function.prototype.name</a>
a different name, perhaps &quot;identifier&quot; if we don't want to trample
over the existing FF and Chrome implementations. &nbsp;Too bad &quot;name&quot;
is such a good name for this functionality.<o:p></o:p></p>

<p class=MsoNormal><br>
The other way to reconcile this is to retreat to keeping the name
&quot;name&quot;, but having it always agree with the identifier used the function's
.toString(). If we do this, then we should choose a good enough identifier
mangling scheme for bound functions (&quot;bind_&lt;original-ident&gt;&quot;)
and literal getters and setters (&quot;get_&lt;ident&gt;&quot;,
&quot;set_&lt;ident&gt;&quot;), and use it in both the .name and in the identifier
position of .toString(). Ugly as this is, I think it's better than having two
different names associated with the same function by two different parts of our
API merely because we couldn't agree on one.<br clear=all>
<o:p></o:p></p>

</div>

</div>

<p class=MsoNormal><br>
-- <br>
&nbsp; &nbsp;Cheers,<br>
&nbsp; &nbsp;--MarkM<o:p></o:p></p>

</div>

</div>

</body>

</html>