On Wed, Nov 9, 2011 at 4:00 PM, Brendan Eich <bren...@mozilla.com> wrote:
> On Nov 9, 2011, at 3:48 PM, Axel Rauschmayer wrote: > > We talked about lexical this for functions long ago (Jan. 2008? at Google > anyway) and IIRC Mark found a subtler flaw. > I think my original example was smaller and more elegant. But the following is adequate to demonstrate the problem: function Outer(secret) { "use strict"; this.v = secret; this.w = secret * 2; this.x = secret * 3; this.InnerPoint = function(x, y) { this.x = x; this.y = y; }; this.InnerPoint.prototype = { getX: function() { return this.x; }, getY: function() { return this.y; } }; } Alice does: var outer = new Outer(mySecret); var innerPoint = new outer.InnerPoint(3,5); bob(innerPoint); // passed innerPoint to Bob, who Alice does not trust. Today, Bob, receiving innerPoint, has no way to obtain Alice's secret. Given your proposal, Bob could do (1,innerPoint.getX)() / 3; Today, if Bob does that, the getX call fails when it tries to evaluate undefined.x. -- Cheers, --MarkM
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss