In webkit nightly not even the getter gets invoked.

On Tue, Oct 18, 2011 at 9:31 PM, felix <feli...@gmail.com> wrote:

> If I define a setter for Array.prototype[0], does [].push invoke that
> setter?
>
> Test code:
>
> <!doctype html><html><body>
> <script>
>  Object.defineProperty(
>    Array.prototype, 0,
>    { get : function() { alert('get 0'); return this.zero; },
>      set : function(v) { alert('set 0 ' + v); this.zero = v; },
>      enumerable : true,
>      configurable : false });
>  var a = [];
>  alert('before push a[0] = ' + a[0]);
>  a.push(44);
>  alert('after push a[0] = ' + a[0]);
> </script>
> </body></html>
>
> On all the browsers I've tried so far, the setter doesn't get invoked.
>
> However, it looks to me like the ES5.1 spec says the setter should get
> invoked:
>
> 15.4.4.7 says push() invokes the [[Put]] internal method
>
> 8.12.5 says [[Put]] tries to use an inherited property descriptor if
> there isn't an own property descriptor.
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to