2012-08-09 11 views
6

Así que veo un montón de código JavaScript que usa "nuevo" al hacer constructores. Después de leer parte de JavaScript Good Parts parece que usar "nuevo" no es el pijama del gato. Eso fue hace 4 años ... ¿Todavía no se recomienda? ¿Cuál es el estándar actual?¿Todavía no se recomienda "nuevo" en JavaScript?

Respuesta

7

¿Desde cuándo se recomienda new? D. Crockford tiene un punto válido y una opinión fuerte, pero new es parte del lenguaje y se usa mucho en muchos proyectos. new es parte del prototipo de modelo de herencia y se debe usar para crear nuevas instancias con una función de constructor. Crockford señala un enfoque puramente funcional utilizando el contexto this de manera apropiada y return this para poder heredar propiedades y métodos entre objetos secundarios. Es una solución diferente a un problema común, pero no significa que no se debe usar new. De hecho, uno de los más copias/fragmentos JS pegado de todos los tiempos es Crockford, el object.create polyfill, y se utiliza new:

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

¡Eso es cierto! Bueno, en su libro menciona "El uso de este estilo de funciones de constructor no es recomendable" (el estilo que usa nuevo). Luego continúa describiendo otras soluciones. Es por eso que mencioné la pregunta. – Parris

+3

No lo recomienda porque puede generar confusión en algunos casos, pero existen otras prácticas comunes para evitar confusiones, como capitalizar las funciones de constructor. Podrías decir lo mismo acerca de que Crockford no recomienda usar '++' y '--' ... – elclanrs

+0

Creo que ambos son utilizables pero dejé de usarlos porque todas las personas con las que trabajo decidieron dejar de usar estos operadores. – Chris

2

nada ha cambiado mucho desde 2008, aparte de la Crockford de influencia Object.create haciendo su camino en ECMAScript 5: new todavía tiene el mismo comportamiento y desventajas que Douglas Crockford ha señalado con fuerza. Mi propia opinión es que él exageró los problemas y convirtió a los desarrolladores contra un operador útil, por lo que continúo usándolo sin problemas; Sugeriría que otros desarrolladores decidan en lugar de internalizar ciegamente y regurgitar (lo admirable) Crockford.

+0

Estoy de acuerdo. Creo que probablemente debería haber dicho que deberíamos usarlo sabiendo que hay inconvenientes, pero que es utilizable. – Chris

Cuestiones relacionadas