[Proposal] Refer to actual value : keyword "itself"

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[Proposal] Refer to actual value : keyword "itself"

Imeian .
When we need to change a value using the old value :

variable = itself + 5 // instead of
variable = variable + 5

object.child.property = itself / 5 // instead of
object.child.property = object.child.property / 5

Changing a value in nested objects is a pain, like Redux states for eg.

return {
    ...state,
    child: {
        ...state.child,
        subchild: {
            ...state.child.subchild,
            property: state.child.subchild.property + 1
        }
    }
}

would then be

return {
    ...state,
    child: {
        ...itself,
        subchild: {
            ...itself,
            property: itself + 1
        }
    }
}



_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Refer to actual value : keyword "itself"

Cyril Auburtin
You could currently do
```js
object.child.property /= 5
```

with destructuring:
```js
const {child: {subchild}, child} = state;

return {
  ...state,
  child: {
    ...child,
    subchild: {
      ...subchild,
      property: subchild.property + 1
    }
  }
}
```

or do-expressions:
```js
return {
  ...state,
  child: do {
    const {child} = state;
    return {
      ...child,
      subchild: do {
        const {subchild} = child;
        return {
          ...subchild,
          property: subchild.property + 1
        };
      }
    }; 
  }
}
```

note: your `property: itself + 1` looks incorrect, since you probably mean to increment the `property` property

On Fri, Sep 6, 2019 at 9:36 AM Imeian . <[hidden email]> wrote:
When we need to change a value using the old value :

variable = itself + 5 // instead of
variable = variable + 5

object.child.property = itself / 5 // instead of
object.child.property = object.child.property / 5

Changing a value in nested objects is a pain, like Redux states for eg.

return {
    ...state,
    child: {
        ...state.child,
        subchild: {
            ...state.child.subchild,
            property: state.child.subchild.property + 1
        }
    }
}

would then be

return {
    ...state,
    child: {
        ...itself,
        subchild: {
            ...itself,
            property: itself + 1
        }
    }
}


_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Refer to actual value : keyword "itself"

Cyril Auburtin
Oops I forgot do-expression don't use `return`, so something, a bit ugly, like:
```js
return {
  ...state,
  child: do {
    const {child} = state;
    ({
      ...child,
      subchild: do {
        const {subchild} = child;
        ({
          ...subchild,
          property: subchild.property + 1
        });
      }
    }); 
  }
}
```

On Fri, Sep 6, 2019 at 10:34 AM Cyril Auburtin <[hidden email]> wrote:
You could currently do
```js
object.child.property /= 5
```

with destructuring:
```js
const {child: {subchild}, child} = state;

return {
  ...state,
  child: {
    ...child,
    subchild: {
      ...subchild,
      property: subchild.property + 1
    }
  }
}
```

or do-expressions:
```js
return {
  ...state,
  child: do {
    const {child} = state;
    return {
      ...child,
      subchild: do {
        const {subchild} = child;
        return {
          ...subchild,
          property: subchild.property + 1
        };
      }
    }; 
  }
}
```

note: your `property: itself + 1` looks incorrect, since you probably mean to increment the `property` property

On Fri, Sep 6, 2019 at 9:36 AM Imeian . <[hidden email]> wrote:
When we need to change a value using the old value :

variable = itself + 5 // instead of
variable = variable + 5

object.child.property = itself / 5 // instead of
object.child.property = object.child.property / 5

Changing a value in nested objects is a pain, like Redux states for eg.

return {
    ...state,
    child: {
        ...state.child,
        subchild: {
            ...state.child.subchild,
            property: state.child.subchild.property + 1
        }
    }
}

would then be

return {
    ...state,
    child: {
        ...itself,
        subchild: {
            ...itself,
            property: itself + 1
        }
    }
}


_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Refer to actual value : keyword "itself"

Imeian .
In reply to this post by Cyril Auburtin
Yes of course I could use the /= operator in this simple example, but not in more complex operations.

About itself in a property, it's correct : I mean itself to refer to the actual value, the value being from a variable or an object property doesn't matter. itself would not be a this equivalent, so whenever itself is used it refers to the actual value we are assigning

Le ven. 6 sept. 2019 à 10:34, Cyril Auburtin <[hidden email]> a écrit :
You could currently do
```js
object.child.property /= 5
```

with destructuring:
```js
const {child: {subchild}, child} = state;

return {
  ...state,
  child: {
    ...child,
    subchild: {
      ...subchild,
      property: subchild.property + 1
    }
  }
}
```

or do-expressions:
```js
return {
  ...state,
  child: do {
    const {child} = state;
    return {
      ...child,
      subchild: do {
        const {subchild} = child;
        return {
          ...subchild,
          property: subchild.property + 1
        };
      }
    }; 
  }
}
```

note: your `property: itself + 1` looks incorrect, since you probably mean to increment the `property` property

On Fri, Sep 6, 2019 at 9:36 AM Imeian . <[hidden email]> wrote:
When we need to change a value using the old value :

variable = itself + 5 // instead of
variable = variable + 5

object.child.property = itself / 5 // instead of
object.child.property = object.child.property / 5

Changing a value in nested objects is a pain, like Redux states for eg.

return {
    ...state,
    child: {
        ...state.child,
        subchild: {
            ...state.child.subchild,
            property: state.child.subchild.property + 1
        }
    }
}

would then be

return {
    ...state,
    child: {
        ...itself,
        subchild: {
            ...itself,
            property: itself + 1
        }
    }
}


_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Refer to actual value : keyword "itself"

Herby Vojčík
In reply to this post by Cyril Auburtin
On 6. 9. 2019 10:34, Cyril Auburtin wrote:
> You could currently do
> ```js
> object.child.property /= 5
> ```
>
> with destructuring:
> ```js
> const {child: {subchild}, child} = state;

Wow, I didn't know I can do that. Nice.
_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Refer to actual value : keyword "itself"

Cyril Auburtin
also optional-chaining will help
```js
return {
    ...state,
    child: {
        ...state?.child,
        subchild: {
            ...state?.child?.subchild,
            property: (state?.child?.subchild?.property ?? 0) + 1
        }
    }
}
```

@Herby yes that's interesting, works in any order actually `const {child, child: {subchild}} = state;`

On Fri, Sep 6, 2019 at 11:23 AM Herby Vojčík <[hidden email]> wrote:
On 6. 9. 2019 10:34, Cyril Auburtin wrote:
> You could currently do
> ```js
> object.child.property /= 5
> ```
>
> with destructuring:
> ```js
> const {child: {subchild}, child} = state;

Wow, I didn't know I can do that. Nice.

_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Refer to actual value : keyword "itself"

Jordan Harband
`var itself = 3;` means that your choice of keyword wouldn't be an option; you'd be limited to something that was currently a syntax error.

On Fri, Sep 6, 2019 at 2:53 AM Cyril Auburtin <[hidden email]> wrote:
also optional-chaining will help
```js
return {
    ...state,
    child: {
        ...state?.child,
        subchild: {
            ...state?.child?.subchild,
            property: (state?.child?.subchild?.property ?? 0) + 1
        }
    }
}
```

@Herby yes that's interesting, works in any order actually `const {child, child: {subchild}} = state;`

On Fri, Sep 6, 2019 at 11:23 AM Herby Vojčík <[hidden email]> wrote:
On 6. 9. 2019 10:34, Cyril Auburtin wrote:
> You could currently do
> ```js
> object.child.property /= 5
> ```
>
> with destructuring:
> ```js
> const {child: {subchild}, child} = state;

Wow, I didn't know I can do that. Nice.
_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
Reply | Threaded
Open this post in threaded view
|

Re: [Proposal] Refer to actual value : keyword "itself"

Sultan
Can you currently do this with the "super" keyword outside of classes?

On Fri, Sep 6, 2019 at 9:16 PM Jordan Harband <[hidden email]> wrote:
`var itself = 3;` means that your choice of keyword wouldn't be an option; you'd be limited to something that was currently a syntax error.

On Fri, Sep 6, 2019 at 2:53 AM Cyril Auburtin <[hidden email]> wrote:
also optional-chaining will help
```js
return {
    ...state,
    child: {
        ...state?.child,
        subchild: {
            ...state?.child?.subchild,
            property: (state?.child?.subchild?.property ?? 0) + 1
        }
    }
}
```

@Herby yes that's interesting, works in any order actually `const {child, child: {subchild}} = state;`

On Fri, Sep 6, 2019 at 11:23 AM Herby Vojčík <[hidden email]> wrote:
On 6. 9. 2019 10:34, Cyril Auburtin wrote:
> You could currently do
> ```js
> object.child.property /= 5
> ```
>
> with destructuring:
> ```js
> const {child: {subchild}, child} = state;

Wow, I didn't know I can do that. Nice.
_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[hidden email]
https://mail.mozilla.org/listinfo/es-discuss