js 中 new fn与new fn()的区别

  在有些代码中,看见了let fn = new Fn()和let fn = new Fn,刚开始有些人或许和我一样感到些许疑惑,但潜意识的也会想到,这两者说不定就是一样的。没错!!在没有参数的情况下这两种的意义就是一样,只不过后者简写了点。

  new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一。

new constructor[([arguments])]

  参数

  构造函数(constructor)
  一个指定对象实例的类型的函数。
  传参(arguments)
  一个用来被构造函数调用的参数列表。
  1. 一个新对象被创建。它继承自foo.prototype.
  2. 构造函数 foo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。new foo 等同于 newfoo(), 只能用在不传递任何参数的情况。
  3. 如果构造函数返回了一个“对象”,那么这个对象会取代整个new出来的结果。如果构造函数没有返回对象,那么new出来的结果为步骤1创建的对象。(一般情况下构造函数不返回任何值,不过用户如果想覆盖这个返回值,可以自己选择返回一个普通对象来覆盖。当然,返回数组也会覆盖,因为数组也是对象。)
posted @ 2017-09-19 14:45  岁末博  阅读(1548)  评论(0编辑  收藏  举报