Por que “new Date (). ToString ()” funciona dado a precedência do operador Javascript?
Estados MDN que existem dois operadores no Javscript que compartilham a maior precedência:
O operador membro associativo à esquerda:foo.bar
O novo operador associativo à direita:new Foo()
Eu normalmente separo explicitamente os dois:(new Date()).toString()
Mas frequentemente vejo os dois combinados:new Date().toString()
De acordo comesta resposta, a razão pela qual a segunda maneira funciona é que é a associatividade do segundo operador que importa quando os dois operadores têm igual precedência. Neste caso, o operador membro é deixado associativo, o que significanew Date()
é avaliado primeiro.
No entanto, se for esse o caso, então por quenew Date.toString()
falhou? Depois de tudo,new Date
éapenas açúcar sintático paranew Date()
. O argumento acima diz que deve funcionar, mas obviamente não funciona.
o que estou perdendo?