Javascript new(Date)和new Date()之间有什么区别?
在javascript中,新建对象的典型方法是这样做:Javascript new(Date)和new Date()之间有什么区别?,javascript,constructor,Javascript,Constructor,在javascript中,新建对象的典型方法是这样做:newdate()。但您也可以这样做:new(Date)。采用后一种方法有什么区别和优点?没有区别 new操作符获取函数引用。 与任何其他运算符一样,操作数可以有括号 不带参数的新表达式之后的()是可选的 但是,如果括号中有更复杂的表达式,它们可以更改优先级顺序,例如。我相信后一种方法与第一种方法相同。我认为它将被解释为新日期,因为括号中没有任何可计算的内容。请注意,new Date相当于new Date()new(Date)很烦人,因为我不
newdate()
。但您也可以这样做:new(Date)
。采用后一种方法有什么区别和优点?没有区别
new
操作符获取函数引用。与任何其他运算符一样,操作数可以有括号 不带参数的新表达式之后的
()
是可选的
但是,如果括号中有更复杂的表达式,它们可以更改优先级顺序,例如。我相信后一种方法与第一种方法相同。我认为它将被解释为新日期,因为括号中没有任何可计算的内容。请注意,
new Date
相当于new Date()
new(Date)
很烦人,因为我不得不去“等等,什么?”再看一遍。你在哪里看到那个疯狂的标记?你可以写新的日期;也但是与下面描述的SLaks没有区别。@epascarello我在下面的SLaks评论中看到了一个例子。你是说那些在lesscss.org上写文章的人真的没有理由这样写吗var parser=new(less.parser)代码>除了制造混乱之外?他们可以像new less.Parser()
那样编写它吗?我不知道他们为什么这样写。看起来有区别(至少我在Chrome中看到了一个)。尝试:new Date().toString()vs new(Date).toString()@DmitryBeransky是的,这是有意义的,至少在找出原因之后:-)接受的语法是new-ctorExpr
或new-ctorExpr(…)
在后一种情况下,ctorExpr
被视为(日期)。toString
,它不是有效的构造函数,因此会呕吐。也就是说,后者被解析为new((Date).toString()
,而前者是(new(Date)().toString()
。这不会改变(…)
是可选的或必需的,尽管它确实会改变解析它的方式。是的,这是有意义的。但这意味着SLaks关于括号的说法并不完全正确(嗯,有点令人困惑)。括号不是“new”的一部分,而是表达式的一部分。换句话说,它不是“new()”,而是“new”(where是“()”)。