MDN утверждает, что в Javscript есть два оператора, которые имеют самый высокий приоритет:
- Лево-ассоциативный оператор-член:
foo.bar - Право-ассоциативный новый оператор:
new Foo()
Я обычно явно разделяю два: (new Date()).toString()
Но я часто вижу, что оба они объединены: new Date().toString()
В соответствии с этим ответом причина, по которой работает второй способ, заключается в том, что вторая операторная ассоциативность имеет значение, когда оба оператора имеют одинаковый приоритет. В этом случае оператор-член остается ассоциативным, что означает, что new Date() оценивается первым.
Однако, если это так, то почему new Date.toString() терпит неудачу? В конце концов, new Date просто синтаксический сахар для new Date(). В приведенном выше аргументе говорится, что он должен работать, но, очевидно, этого не делает.
Что мне не хватает?