JavaScript object functions and `this` when unbound and returned in expression/parens

The grouping operator does not destroy property references, which are provoking the method call.

This is explicitly mentioned in the spec:

NOTE: This algorithm does not apply GetValue to the result of
evaluating Expression. The principal motivation for this is so that
operators such as delete and typeof may be applied to parenthesised
expressions.

In your lines 4 and 5, it’s not the parenthesis but the operators (?: and ||) that de-reference the property and yield the “unbound” function.

Leave a Comment