Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript new(Date)和new Date()之间有什么区别?_Javascript_Constructor - Fatal编程技术网

Javascript new(Date)和new Date()之间有什么区别?

Javascript new(Date)和new Date()之间有什么区别?,javascript,constructor,Javascript,Constructor,在javascript中,新建对象的典型方法是这样做:newdate()。但您也可以这样做:new(Date)。采用后一种方法有什么区别和优点?没有区别 new操作符获取函数引用。 与任何其他运算符一样,操作数可以有括号 不带参数的新表达式之后的()是可选的 但是,如果括号中有更复杂的表达式,它们可以更改优先级顺序,例如。我相信后一种方法与第一种方法相同。我认为它将被解释为新日期,因为括号中没有任何可计算的内容。请注意,new Date相当于new Date()new(Date)很烦人,因为我不

在javascript中,新建对象的典型方法是这样做:
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是“()”)。