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