为什么在JavaScript中使用new和constructor函数是错误的

时间:2014-02-10 04:59:55

标签: javascript oop prototype

我在使用new和构造函数的SO问题中看到了一些文章和一些声明的答案是错误的,不应该使用。

它们违背了JavaScript的原型性质。

有人可以请教我,并说明使用new和构造函数是如此糟糕的情况它应该永远不会被使用吗?

1 个答案:

答案 0 :(得分:2)

  

使用new和构造函数是错误的,不应该使用。

阅读Is JavaScript's "new" keyword considered harmful? - ,但事实并非如此。一些(正确的)参数是

  • 由于隐藏了原型概念,新手们感到困惑。引用@Aadit

      

    [使用new]构造函数变得更简单。然而它变得非常   很难向一个知道的人解释原型继承   没什么关系的。要解释它变得更加困难   知道经典继承的人。

  • 忘记new
  • 时,构造函数会无声地失败
  • 在少数情况下, Object.create方法更清晰
  • 构建类层次结构很复杂,often done wrong

但是,一旦你理解了这些,new就是无害的。实际上,每次需要实例初始化和原型继承时,具有new的构造函数都是可行的。

  

它们违背了JavaScript的原型性质。

这永远不会改变。我几乎无法想象为什么有人会批评这一点,原型继承比类继承更强大。可能他们只是反对语法。

  

有人可以请教我,并说明使用新的和构造函数是如此糟糕的情况它应该永远不会被使用?

不需要时不应使用它。可以使用模块模式和对象文字轻松创建单身人士;继承在这里没有帮助。有关示例,请参阅Is it right to think of a Javascript Function Expression that uses the 'new' keyword as 'static'