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