> but i can not act like this inside the Object, because i am not working
with the Proxy
You're not quite taking into account the behavior of `this` in JS. `this`
is set at call-time, so when you do
```
class items {
// ...
getItem3(){
return this.$3;
}
}
```
`this` depends on how `getItem3` was called. In your case if you do
```
myItems = new items();
myItems.getItem3();
```
`this` will be `myItems` because that is how you have called it, meaning
that `getItems3()` will behave just like if you had done `myItems.$3`.
Your code works as expected in this Fiddle: https://jsfiddle.net/2dgefd9d/
On Fri, Jul 28, 2017 at 4:48 PM, Tobias Buschor <[email protected]>
wrote:
> I realy like the possibility to react to dynamic properties, like what you
> can do with Proxies.
> But Proxies are not the (my) perfect solution.
>
>
> ```
> class items {
> constructor() {
> return new Proxy(this, {
> get(target, name) {
> if (name[0] === '$') return target.getItem(name.substr(1))
> .value;
> return target[name];
> }
> });
> }
> getItem(id) {
> return this._item[id];
> }
> }
>
> myItems = new items(); // [1]
> myItems.$1
> ```
>
> [1] this direct returns a Proxy for the newly created Object, ok..
> i can do "myItems.$3" instead of "myItems.getItem(4)";
>
>
> but i can not act like this inside the Object, because i am not working
> with the Proxy
>
> ```
> class items {
> getItem3(){
> return this.$3;
> }
> }
> ```
>
> I have to do this instead...
>
> ```
> class items {
> getItem3(){
> return this.getItem(3);
> }
> }
> ```
>
> What about something like getters and setters for the rest (undefined
> properties)?
>
> ```
> class items {
> get...(name){
> if (name[0] === '$') return this.getItem(name.substr(1)).value;
> }
> set...(name, value){
> // implement setter for unknown
> }
> }
> ```
>
>
> Maybe a stupid idea and certainly not thought through.
> But what do you think?
>
>
>
>
>
>
> _______________________________________________
> 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