But, can

```js
let a = [1,2,3]
```

create a new MyArray? Maybe, instead of having negative indices by
default (which breaks some backwards compatibility) we can introduce a
symbol for overriding property access? Something like

```js
Array.prototype[Symbol.propertyAccess] = function(index) {
  if (index < 0) ...
  else ...
}
```

? Just an idea; I'm not sure if that's a good use for Symbols. We
could then easily add this helper code to a given app.

On Mon, Apr 18, 2016 at 10:25 AM, kdex <[email protected]> wrote:
> I don't see a good reason why to mangle with this.
> Note that you can achieve this behavior without breaking backwards 
> compatibility with ES6 Proxies:
>
> ```js
> class MyArray extends Array {
>         constructor(...args) {
>                 super(...args);
>                 function computeProperty(target, property) {
>                         const index = +property;
>                         return index < 0 ? String(target.length + index) : 
> property;
>                 }
>                 return new Proxy(this, {
>                         get(target, property, receiver) {
>                                 return Reflect.get(target, 
> computeProperty(target, property), receiver);
>                         },
>                         set(target, property, receiver) {
>                                 return Reflect.set(target, 
> computeProperty(target, property), receiver);
>                         }
>                 });
>         }
> }
> ```
>
> On Montag, 18. April 2016 09:59:15 CEST /#!/JoePea wrote:
>> Backwards compatibility has been broken before. I don't think this one
>> is too bad of a breakage.
>>
>> On Sun, Apr 17, 2016 at 9:48 PM, Biju <[email protected]> wrote:
>> > On 17 April 2016 at 17:29, Frankie Bagnardi <[email protected]> wrote:
>> >> That would break backward compatibility;
>> >>
>> >> ```js
>> >> var a = ['a'];
>> >> a['-1'] = 'test';
>> >> Object.keys(a) // ['0', '-1']
>> >> ```
>> >
>> > Do we have statistics how many sties depend on that?
>> > _______________________________________________
>> > es-discuss mailing list
>> > [email protected]
>> > https://mail.mozilla.org/listinfo/es-discuss
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to