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);