<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <br>
    -----BEGIN PGP SIGNED MESSAGE----- <br>
    Hash: SHA1 <br>
    &nbsp;<br>
    This sounds great, but doesn't this kind of violate referential<br>
    transparency? The following function has always worked as
    expected:<br>
    function foo(){<br>
    &nbsp; var obj = {"bar":"hello"}; // assuming quoting names are strings<br>
    &nbsp; alert(obj.bar);<br>
    }<br>
    foo();<br>
    until is put in a context (or even just concatenated with?) with a<br>
    "private bar;" declaration. Changing the behavior of property<br>
    identifiers seems like an awkwardly complicating addition to
    EcmaScript.<br>
    <br>
    Couldn't the goals of this be achieved by having a Name
    constructor<br>
    (albiet less convenient syntax, since you have to use obj[name],<br>
    perhaps that is what you are addressing) or having private name
    create<br>
    a name Name (to be used like obj[name])?<br>
    Kris<br>
    <br>
    <br>
    On 12/11/2010 4:58 PM, Allen Wirfs-Brock wrote:<br>
    <span style="white-space: pre;">&gt; On the wiki, I've posted a
      new strawman Private Name<br>
      &gt; proposal
      <a class="moz-txt-link-freetext" href="http://wiki.ecmascript.org/doku.php?id=strawman:private_names">http://wiki.ecmascript.org/doku.php?id=strawman:private_names</a> .<br>
      &gt; It replaces Dave and Sam's original Names strawman and was
      developed<br>
      &gt; in consultation with them. This is a significant revision
      to the<br>
      &gt; original proposal but builds upon some of the same base
      ideas. <br>
      &gt;<br>
      &gt; In reading this strawman it's important to understand that
      its<br>
      &gt; concept of "private" is quite different from what you may
      be use to<br>
      &gt; from C++ or Java. In those languages "private" is an
      attribute of<br>
      &gt; a member (field or method) of an class. It means that the
      member is<br>
      &gt; only accessible to other members of the same class
      (ignoring what<br>
      &gt; can be done via reflection). This model is not a
      particularly good<br>
      &gt; match to the JavaScript object model where the structure of
      an<br>
      &gt; object is much more dynamic and method functions can be
      dynamically<br>
      &gt; associated or disassociated with an object and shared by
      many<br>
      &gt; different kinds of objects.<br>
      &gt;<br>
      &gt; In this proposal, "private" is an attribute of a property
      name,<br>
      &gt; rather than of an actual property. Any code that has access
      to a<br>
      &gt; "private name" can use that name to create or access a
      property of<br>
      &gt; any object. It is accessibility to the name that is
      controlled<br>
      &gt; rather than accessibility to the property. This seems to
      fit more<br>
      &gt; naturally with JavaScript's dynamic object construction
      patterns<br>
      &gt; and without really changing the fundamental JavaScript
      object<br>
      &gt; model it enables JavaScript programmers to create a number
      of<br>
      &gt; different information hiding abstractions.<br>
      &gt;<br>
      &gt; Please read the proposal and let's start the discussion.<br>
      &gt;<br>
      &gt; Allen<br>
      &gt;<br>
      &gt;<br>
      &gt;<br>
      &gt;<br>
      &gt; _______________________________________________<br>
      &gt; es-discuss mailing list<br>
      &gt; <a class="moz-txt-link-abbreviated" href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
      &gt; <a class="moz-txt-link-freetext" href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a></span><br>
    <br>
    - -- <br>
    Kris Zyp<br>
    SitePen<br>
    (503) 806-1841<br>
    <a class="moz-txt-link-freetext" href="http://sitepen.com">http://sitepen.com</a><br>
    <br>
    -----BEGIN PGP SIGNATURE-----
<br>
    Version: GnuPG v1.4.9 (MingW32)
<br>
    Comment: Using GnuPG with Mozilla - <a class="moz-txt-link-freetext" href="http://enigmail.mozdev.org/">http://enigmail.mozdev.org/</a>
<br>
    &nbsp;<br>
    iEYEARECAAYFAk0Kh1oACgkQ9VpNnHc4zAzCbgCcCl6kh77DCuCmd1YRw7hqC/Ml
<br>
    LwcAn0V7Wm0Yr7FzGW618atYT4c7kVHO
<br>
    =eoj3
<br>
    -----END PGP SIGNATURE-----
<br>
    <br>
  </body>
</html>