【问题标题】:What is the difference between new Foo and new Foo() in javascript?javascript中的new Foo和new Foo()有什么区别?
【发布时间】:2011-03-08 00:38:23
【问题描述】:

我知道C++中两者的区别,但不知道JS是否也一样

【问题讨论】:

  • 我问这个的原因是因为在我的代码中人们在很多地方都使用了 new Foo,当我通过 JSLint 运行它时,它抛出了一个错误,所以只是想知道这个语句是否有问题

标签: javascript


【解决方案1】:

根据我的经验,除了 new Foo 你不能传递任何参数和 new Foo() 你可以传递任何参数之外没有什么区别。

【讨论】:

    【解决方案2】:

    来自new 的 ECMAScript 语言规范:

    新的新表达式:

    调用 [[Construct]] 方法 结果(2),提供无参数

    新的 MemberExpression 参数

    调用 [[Construct]] 方法 结果(2),提供列表 Result(3) 作为参数值。

    这只是构造函数是否接收任何参数的问题。

    【讨论】:

      【解决方案3】:

      Foo() 调用一个函数,new Foo() 实例化一个 foo 类型的对象。如果您定义了原型,则其中定义的所有方法和实例变量也会被实例化。

      function Foo() {}
      
      Foo.prototype = {
         myVar: 'Some val',
         sayFoo: function () {alert(this.myVar);}
      }
      
      
      var foo = new Foo();
      foo.sayFoo();
      

      这会提醒“Some Val”。

      【讨论】:

      • 我认为您误解了这个问题。他询问了var foo = new Foo();和var foo = new Foo;之间的区别。我认为泰勒是对的。它们是一样的。
      • 啊,有道理,不知道你为什么不想使用括号......但确实如此。
      猜你喜欢
      • 2010-12-12
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2017-06-23
      • 2012-06-12
      • 2011-11-23
      相关资源
      最近更新 更多