在 JavaScript 中仍然不推荐“新”吗?

Is "new" still not recommended in JavaScript?

本文关键字:JavaScript      更新时间:2023-09-26

所以我看到很多JavaScript代码在制作构造函数时使用"new"。在阅读了JavaScript the Good Parts的一部分之后,似乎使用"new"并不是猫的睡衣。不过那是4年前的事了...还是不推荐吗?现行标准是什么?

从什么时候开始不推荐new? D. Crockford有一个有效的观点和强烈的意见,但new是语言的一部分,它在许多项目中被大量使用。 new是原型继承模型的一部分,必须用于创建具有构造函数的新实例。Crockford 指出了一种纯函数式方法,该方法适当地使用this上下文,并return this能够在子对象之间继承属性和方法。这是常见问题的不同解决方案,但这并不意味着不应使用new。事实上,有史以来复制/粘贴最多的JS片段之一是Crockford的,object.create polyfill,它使用new

if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
} 

自 2008 年以来,除了受 Crockford 影响的 ECMAScript 5 Object.create之外,没有任何太大变化: new仍然具有道格拉斯·克罗克福德(Douglas Crockford)强烈指出的相同行为和缺点。我自己的观点是,他相当夸大了问题,让开发人员反对一个有用的运算符,所以我继续使用它而没有问题;我建议其他开发人员下定决心,而不是盲目地内化和反刍(公认的令人钦佩的)Crockford。