Well-Known Symbols: Array item getter/setter

Axel Rauschmayer axel at rauschma.de
Thu Apr 9 18:35:15 UTC 2015


Proxies should be enough for this. Is there any reason not to use them?

> On 09 Apr 2015, at 20:31, Kos Ddsky <kosich at gmail.com> wrote:
> 
> ( note: you can view this message as a gist @ https://gist.github.com/kosich/375da99403c76bc75bbd <https://gist.github.com/kosich/375da99403c76bc75bbd> )
> Currently we can imitate Arrays only with objects, where we would refer to a value at some position via referring to objects property ( with integer index being converted to a string )
> ```js
> var arr = {
>   "0" : "zero",
>   "1" : "one" 
> };
> 
> arr[ 1 ];
> ```
> But we wouldn't get all those features that original Array has (like length autoincremention, splice, split etc.)
> 
> So, the suggestion is to have WKS for getting and setting item in array by index. 
> 
> ```js
> get [ Symbol.Array.item ] ( index ){ /*returning code here*/  }
> set [ Symbol.Array.item ] ( index ){ /*setter code here*/ }
> ```
> 
> -or-
> 
> ```js
> [ Symbol.Array.get ] ( index ){ /*returning code here*/ }
> [ Symbol.Array.set ] ( index ){ /*setter code here*/ }
> ```
> 
> ## Possible usecases
> 
> ### readonly array
> will throw if user tries to set item directly via index
> ```js
> class ROArray extends Array {
> 
>   constructor( initialValues ){
>     // init the array values here
>   }
> 
>   [ Symbol.Array.set ] ( index ){
>     throw 'can`t set';
>   }
> 
>   [ Symbol.Array.get ] ( index ){
>     return this[ index ];
>   }
> 
> }
> ```
> 
> ### template-like behavior
> items getter will wrap the value into a tag
> ```js
> class LITemplateArray extends Array {
> 
>   set tag ( tag ){ 
>     this._tag  = tag;
>   }
> 
>   [ Symbol.Array.get ] ( index ){
>     var tag = this._tag || 'li',
>           value = this[ index ];
> 
>     return `<${ tag }>${value}</${tag}>`;
>   }
> 
> }
> ```
> /*this is my first thread here, so I'm sorry if being wrong somewhere*/
> /*after googling around, I haven't found such suggestion. though could easily miss that*/
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-- 
Dr. Axel Rauschmayer
axel at rauschma.de
rauschma.de



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150409/623d3446/attachment.html>


More information about the es-discuss mailing list