Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 新建MyFunction()与新建(MyFunction)_Javascript_Syntax_New Operator - Fatal编程技术网

Javascript 新建MyFunction()与新建(MyFunction)

Javascript 新建MyFunction()与新建(MyFunction),javascript,syntax,new-operator,Javascript,Syntax,New Operator,我正在浏览,它在几个地方使用了语法 var myVar = new(MyFunction); e、 g 我熟悉newmyfunction()和newmyfunction(是的,我读过)。但是上面的语法对我来说是新的-它看起来像一个函数调用,尽管我怀疑它只是带有一些括号的newmyfunction。这些使用新的方法之间有什么区别吗?如果没有,是否有充分的理由使用其中一种?我本以为newmyfunction()是最清晰的 如果这是重复的,我深表歉意-我搜索了但找不到它。如果 var MyFunct

我正在浏览,它在几个地方使用了语法

var myVar = new(MyFunction);
e、 g

我熟悉
newmyfunction()
newmyfunction
(是的,我读过)。但是上面的语法对我来说是新的-它看起来像一个函数调用,尽管我怀疑它只是带有一些括号的
newmyfunction
。这些使用
的方法之间有什么区别吗?如果没有,是否有充分的理由使用其中一种?我本以为
newmyfunction()
是最清晰的

如果这是重复的,我深表歉意-我搜索了但找不到它。

如果

var MyFunction = function(){
    alert("ok");
}
然后

变成

var myVar = new(function(){
    alert("ok");
});

这只是组织代码的问题

它们看起来是一样的,只是括号在不同的地方,可能是风格上的,也可能是为了让作者更清楚。以下内容完全相同:

函数Foo(){this.now=new Date();}
var f1=新的Foo;
变量f2=(新的Foo);
var f3=新的(Foo);
var f4=新的Foo();
var f5=(新的Foo());
请注意,以下形式不同,因为直接调用“Foo”函数(由于参数的优先级),不返回任何内容(未定义),这是“new”运算符的无效参数(因为“未定义”不是函数):

var x=new(Foo());//TypeError:undefined不是函数

您所做的示例是等效的,没有区别:新的
是一个运算符。在运算符周围找到括号并不少见,例如:

if (typeof(myvar) === "function")
或者:

return(myvar);

但它们是运算符,不需要括号。在这种情况下,我不喜欢它们,但这是个人喜好的问题。

是的,这几乎就是我所猜测的。感谢您对各种选项进行了详细分析-仍在试图找出为什么
new(Foo)
会是一个不错的风格选择。@nrabinowitz:嗯,我想没有考虑到品味=)
if (typeof(myvar) === "function")
return(myvar);