JavaScript中仍然不建议使用“new”吗?

时间:2012-08-09 07:49:14

标签: javascript new-operator

所以我看到很多JavaScript代码在制作构造函数时使用“new”。阅读部分JavaScript的好零件之后,似乎使用“新”不是猫的睡衣。那是4年前的事了......是不是仍然不推荐?现行标准是什么?

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

自2008年以来,除了受Crockford影响的Object.create进入ECMAScript 5之外,没有什么变化:new仍有与Douglas Crockford强力指出的相同的行为和弊端。我自己的观点是,他过分夸大了问题,并将开发人员转向了一个有用的运营商,所以我继续使用它没有问题;我建议其他开发者自己构思,而不是盲目地内化和反刍(公认的令人钦佩的)Crockford。