> for (var i = 0; i < 10; i++) {
>    foo({ handleClick: () => {} })
> }

your ux-workflow example of creating multiple, closure-bound handleClick's is 
wasteful, and more complicated than needs be.  the correct design-pattern is to 
delegate it with a single handClickDelegated (and figure out context from 
event.target.dataset) [1]

```html
<button data-prop-ii="1">button #1</button>
<button data-prop-ii="2">button #2</button>
<button data-prop-ii="3">button #3</button>
<script>
/*jslint browser, devel*/
(function () {
    "use strict";
    var handleClickDelegated;
    handleClickDelegated = function (event) {
        document.body.innerHTML += (
            "<div>clicked button #"
            + event.target.dataset.propIi
            + "</div>"
        );
    };
    document.body.addEventListener("click", handleClickDelegated);
}());
</script>
```

[1] https://codepen.io/kaizhu256/pen/xMLvzX


> On 5 Feb 2019, at 5:50 AM, Sultan Tarimo <[email protected]> wrote:
> 
> For example given a set of values. A function that checks whether the values 
> of the object are equal could shallow compare the values of each property in 
> the object. However this heuristics falls short for inline/bound functions 
> that share the same target/backing but are only different with respect to the 
> function “objects" equality.
> 
> Consider the following:
> 
> function foo (props) {
>    return shallowCompare(props) ? expensiveOperation(props) : 
> memorizedOperation(props)
> }
> 
> for (var i = 0; i < 10; i++) {
>    foo({ handleClick: () => {} })
> }
> 
> The function `handleClick` passed to “foo” always points to the same function 
> target even though the closure object passed may be different on each 
> iteration.
> 
> Function.isSameTarget(a, b)
> 
> Would expose some level of introspection to identify when the function is 
> either a bound function referencing the same function target or a closure 
> object referencing the same function target.
> 
> This would also allow things like:
> 
> class A {fn = () => {}}
> 
> Function.isSameTarget((new A).fn, (new A).fn) 
> _______________________________________________
> 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