6

所以我看到很多 JavaScript 代码在创建构造函数时使用“new”。在阅读了部分 JavaScript the Good Parts 之后,似乎使用“新”不是猫的睡衣。那是4年前的事了……还是不推荐吗?目前的标准是什么?

4

2 回答 2

7

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

if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
} 
于 2012-08-09T07:57:17.450 回答
2

自 2008 年以来,除了受 Crockford 影响Object.create进入 ECMAScript 5 之外,没有什么改变:new仍然具有 Douglas Crockford 强烈指出的相同行为和缺点。我个人的看法是,他夸大了问题,让开发人员反对一个有用的操作符,所以我继续使用它没有问题;我建议其他开发人员自己做决定,而不是盲目地内化和反刍(公认的令人钦佩的)Crockford。

于 2012-08-09T09:21:57.693 回答