Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在JavaScript中使用new和constructor函数是错误的_Javascript_Oop_Prototype - Fatal编程技术网

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

为什么在JavaScript中使用new和constructor函数是错误的,javascript,oop,prototype,Javascript,Oop,Prototype,我看过一些文章和一些关于问题答案的主张,因此使用new和构造函数是错误的,不应该使用 它们违背了JavaScript的原型本质 有人能告诉我一个情况吗?使用new和构造函数太糟糕了,不应该使用 使用new和constructor函数是错误的,不应使用 阅读-否,它不是。有几个(正确的)论点是正确的 因为隐藏了原型概念,所以新手很困惑。引述: [使用new]构造函数变得更简单。然而,它变得非常有趣 很难向一个知道的人解释原型遗传 没什么。要向一位专家解释这一点就更加困难了 知道古典遗产的人 当

我看过一些文章和一些关于问题答案的主张,因此使用
new
和构造函数是错误的,不应该使用

它们违背了JavaScript的原型本质

有人能告诉我一个情况吗?使用
new
和构造函数太糟糕了,不应该使用

使用new和constructor函数是错误的,不应使用

阅读-,它不是。有几个(正确的)论点是正确的

  • 因为隐藏了原型概念,所以新手很困惑。引述:

    [使用
    new
    ]构造函数变得更简单。然而,它变得非常有趣 很难向一个知道的人解释原型遗传 没什么。要向一位专家解释这一点就更加困难了 知道古典遗产的人

  • 当忘记
    new
  • 在少数情况下,纯
    Object.create
    方法更干净
  • 构建类层次结构是复杂且复杂的
然而,一旦你理解了这些,它是无害的。实际上,每次您需要实例初始化和原型继承时,使用
new
的构造函数都是可行的

它们违背了JavaScript的原型本质

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

有人能告诉我,使用新函数和构造函数是如此糟糕,以至于永远不应该使用它吗


不需要时不应使用。可以使用模块模式和对象文本轻松创建单例;继承在这里没有帮助。请参见示例。

new
只是程序员囊中的另一个工具——不要害怕在相关的地方使用它们。类似于
eval
with
(尽管后者的情况很少)。你能链接到那些文章吗?在
Object.create
之前,确实没有什么东西可以替代
new
,如果需要原型支持。@user2864740,MDN上有一个for Object.create,它使用至少十年前包装的模式(最初称为“克隆”)。也有直接分配给
\uuuuu proto\uuuu
(在某些浏览器中),但这已经被其他方法所取代。@RobG The polyfill需要
新的
,而且
\uuuu proto\uuuu
从未被远程标准化过。但是可以使用
新的
,而不用继承;并且使用原型“保存属性”(尽管在现代JS实现中可能不是有效的参数)。@user2864740:No.
new
总是使用自定义继承链创建新对象-或者你是说
new object
是指“无继承”?谢谢Bergi,很抱歉在这里发布此消息,但最近出现了关于文章或直接建议不要使用新消息的答案。也许我错过了一些新的开发,应该建议询问原型信息的用户不要使用新的,但我不这么认为。一个问题,包括我在这些语句中遇到的问题,已在@Bergi结束。下面的回答解决了OP的问题(在评论中给出了更正),然后继续使用“帮助器”函数,其好处是“使用它不需要理解原型”,并且有一个链接到文章,该链接将告诉您使用新的工具是不好的(两次)首先对你的答案发表评论DC文章的链接令人困惑,但有几处声称“经典继承”是不好的,还有DC如何使用它的链接,我确实评论说,使用的代码确实不好,但不是这样做的方式it@HMR:啊,你指的是-你可以直接指那里:-)事实上我认为他是对的。所有这些都是关于理解它是如何工作的——而
new
对学习者没有帮助。然而,对于大师来说,这是一个强大的工具。因此,从中得出你自己的结论——你(和你的团队)准备好使用它了吗?