On Thu, Nov 3, 2011 at 7:55 PM, Mark S. Miller <erig...@google.com> wrote:
>
>      function makeTable() {
>       var array = [];
>       return Object.freeze({
>         add: function(v) { array.push(v); },
>         store: function(i, v) { array[i] = v; },
>         get: function(i) { return array[i]; }
>       });
>     }
>
>  Given just a table instance, can Bob nevertheless obtain direct access to
> the underlying array?
>

So Bob can cheat by extending Array.prototype, right?

Object.defineProperty(Array.prototype, 'self', {
  get: function() {
    return this;
  }
});
console.log(table.get('self'));

That's why Douglas proposes using var array = Object.create(null), an
object without a prototype that can be extended.


Juan
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to