当前位置: 首页 > 面试题库 >

JavaScript使用“ new”运算符创建对象时,我们可以省略括号吗?

桑思远
2023-03-14
问题内容

我看到过这样创建的对象:

const obj = new Foo;

但是我认为创建对象时括号不是可选的:

const obj = new Foo();

创建对象的前一种方法在ECMAScript标准中是否有效并定义?前一种创建对象的方式与后一种创建方式之间有什么区别吗?是一个比另一个更好的选择吗?


问题答案:

引用David Flanagan 1:

作为一种特殊情况,new仅对于运算符,JavaScript通过在函数调用中没有参数的情况下允许省略括号来简化语法。以下是使用new运算符的一些示例:

o = new Object;  // Optional parenthesis omitted here
d = new Date();

...

就个人而言,即使构造函数不带任何参数,我也总是使用括号。

另外,如果省略括号,JSLint可能会伤害您的感觉。报告Missing '()' invoking a constructor,该工具似乎没有办法容忍括号遗漏。



 类似资料:
  • 有可能使用@Configurable类那 我知道用@Autowired和@Resource等是可能的...还有其他的吗? 如。 然后像这样 除了能够使用<code>new</code>操作符创建<code>MyObj</code>并仍然让spring处理注释之外,还有其他选择吗? ——编辑: 在使用@Autowired时,可以使用来做到这一点,看看一些带有Spring和AOP的Hibernate和

  • 问题内容: 我已经搜索过了,但是找不到答案,无论出于什么原因,我都感到羞耻,无法问教授,因为那种感觉当成千上万的人盯着你看时… 无论如何,我的问题是使用括号的重要性是什么?如果我省略它们可以吗?例: 与 我知道它们都可以使用,但是如果省略括号(由于能见度,我倾向于做很多事情)会改变任何东西吗?正如我说的,我知道它有效,我测试了数十次,但是现在我的一些单项作业越来越大,出于某种原因,我出于非理性的恐

  • 这里将创建两个对象,一个在堆内存中,另一个在字符串池中。 那么,方法有什么用呢?执行上述语句后,字符串将在堆和字符串池中可用

  • 我知道这可能是非常基本的,也可能是非常直接的,但我无法清楚地理解在这种情况下会发生什么,所以,就这样吧。 在以下代码中: 我知道str1和str2将在字符串常量池中分别创建一个对象“Hello”和“World”。而对于str3,将在字符串常量池外部创建一个新对象,该对象指向在字符串常量池内部创建的“HelloWorld”。 我的问题是,如果我concat 2个或更多字符串(使用“”或concat(

  • 问题内容: 我知道这可能是很基本的,可能很简单,但是我无法清楚地了解在这种情况下会发生什么,所以就来了。 在下面的代码中: 我知道,str1和str2的将分别创建一个对象的“Hello”和“世界” 里* 的 字符串常量池的 。对于str3,在 字符串常量池 外部 创建一个新对象,该对象指向 在 字符串常量池 内部 创建的“ HelloWorld” 。 __ *__ 我的问题是,如果我concat

  • 问题内容: 我们可以在PHP中使用对象运算符的不同方式有哪些? 问题答案: PHP有两个对象运算符。 如果要在实例上调用方法或访问实例属性,则使用第一个。 当您要调用方法,访问变量或在子类中调用方法的父类版本时,使用第二个。