<html><head><title>Re: Approach of new Object methods in ES5</title>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
</head>
<body>
<span style=" font-family:'Courier New'; font-size: 9pt;">Hello Brendan,<br>
<br>
Sunday, April 18, 2010, 5:01:52 PM, you wrote:<br>
<br>
</span><table>
<tr>
<td width=1 bgcolor= #0000ff><br>
</td>
<td width=1105><span style=" font-family:'courier new'; font-size: 9pt;">On Apr 18, 2010, at 7:13 AM, Dmitry A. Soshnikov wrote:<br>
<br>
This desugared view with enclosing anonymous function means that<br>
"getPrototype" name is available only in scope of of this function and<br>
when this scope ends, "getPrototype" name will be GC'ed (and related<br>
object too -- {value: ...})<br>
<br>
That object may be GC'ed earlier, it's just a descriptor used to define the prototype property.<br>
<br>
<br>
and "Object.prototype" again won't have<br>
"getPrototype" name outside, right?<br>
<br>
Right.<br>
<br>
<br>
(Although, it's a bit strange, as it shouldn't be GC'ed as there is<br>
object related with this "name" object and vice-versa -- the "name" is<br>
still bound to this object {value: ...}. But, I don't know exactly<br>
about implementation).<br>
<br>
See&nbsp;<a href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf">ES5</a>&nbsp;-- Object.defineProperty(Object.prototype, getPrototype, {value: ...}) does not retain a reference to the {value: ...} object after it returns. It merely consults it to see how to define the property named by (in this case) the getPrototype Name object in Object.prototype.<br>
<br>
<br>
I.e. we can use "obj.getPrototype() freely here..." -- only inside this<br>
object (in this case -- inside this function)?<br>
<br>
Yes.<br>
<br>
<br>
And outside of this<br>
object "obj.getPrototype()" can mean completely different thing -- with<br>
"string" or "name" key, right?<br>
<br>
Right.<br>
<br>
<br>
And if already was declared the same<br>
"name"/"string" property, it isn't collide because our local "getPrototype"<br>
name has other identity, yeah?<br>
<br>
Yes.<br>
<br>
<br>
</td>
</tr>
</table>
<span style=" font-family:'Courier New'; font-size: 9pt;"><br><br>
Yeah, thank you, now it is clear.<br>
<br>
</span><table>
<tr>
<td width=1 bgcolor= #0000ff><br>
</td>
<td width=1105><span style=" font-family:'Courier New'; font-size: 9pt;"><br><br>
By the way, is there any ability to test some Harmony implementation<br>
already? Maybe some part of it which currently is being implemented?<br>
<br>
Some, so far mainly&nbsp;<a href="http://wiki.ecmascript.org/doku.php?id=harmony:proxies">harmony:proxies</a>&nbsp;for SpiderMonkey, see&nbsp;<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=546590">this bug</a>.<br>
</td>
</tr>
</table>
<span style=" font-family:'Courier New'; font-size: 9pt;"><br><br>
<br>
Yes, I'll follow and watch the development progress carefully.<br>
<br>
Thanks again,<br>
Dmitry.</body>