MDN 声明Javscript 中有两个运算符具有最高优先级:
- 左结合成员运算符:
foo.bar
- 右结合 new 运算符:
new Foo()
我通常明确地将两者分开:(new Date()).toString()
但我经常看到它们结合在一起:new Date().toString()
根据这个答案,第二种方式起作用的原因是,当两个运算符具有相同的优先级时,第二个运算符的关联性很重要。在这种情况下,成员运算符是左关联的,这意味着new Date()
首先评估。
但是,如果是这样,那为什么会new Date.toString()
失败呢?毕竟,new Date
只是. _ new Date()
上面的论点说它应该起作用,但显然没有。
我错过了什么?