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