MDN指出,在Javscript中有两个具有最高优先级的运算符:
- 左结合成员运算符:
foo.bar
- 右结合的新运算符:
new Foo()
我通常会明确地将这两者分开:(new Date()).toString()
但我经常看到它们组合在一起:new Date().toString()
根据this answer,第二种方式有效的原因是当两个运算符具有相等的优先级时,第二个运算符的结合性很重要。在这种情况下,成员运算符是左结合的,这意味着new Date()
会先被计算。
new Date.toString()
会失败呢?毕竟,new Date
只是new Date()
的语法糖。上述论点说它应该起作用,但显然并不起作用。我错过了什么?
Dim x As New ...
,但我不认为我们可以做Dim x As New Date().ToString()
。我们可以做Dim x As String = new Date().ToString()
。 - ps2goat()
运算符将在.
访问其属性之前执行构造函数。 - Broxzier