JavaScript: ¿Por qué querría agregar claves de objeto con el constructor de objetos?

Generalmente se considera una mala forma de usar la palabra clave “nueva” en Javascript moderno, o los constructores en general. No hay ninguna ventaja en el caso específico del que estás hablando. Hace que su código sea más abarrotado y menos claro y no hace nada por usted que {} no lo haga ya. Básicamente está ahí como sucralosa sintáctica para personas que provienen de un entorno clásico de OO. Tiene un impacto negativo en el rendimiento por razones que otros ya han mencionado, pero debo señalar que el impacto es insignificante (en otras palabras, no vaya a refactorizar el código existente para usar literales de objetos pensando que lo hará más rápido )

En un nivel más amplio, considere usar Object.create (prototipo) cuando necesite herencia, y use una función de fábrica cuando necesite poder inicializar el nuevo objeto con datos. No uses constructores.

El único otro momento para usar “nuevo” es cuando estás usando clases de ES6, pero muchos de nosotros (incluido yo mismo) sentimos que es una mala idea.

Gracias por A2A,

Supongo que tu segundo fragmento debería mostrar

var bill = “bill”;
amigos [factura] = {};

OK al tema principal. Por supuesto, puede usar la creación de objetos literales. No necesitas usar new . Ambos tienen su __proto__ asignado a Object y ambos tienen su constructor como function Object()

Es un hecho conocido que, en comparación con el objeto literal, el new Object() patrón de creación new Object() está menos optimizado para el motor JS. Compruébelo en: nuevo objeto vs literal. Lo mejor es usar el objeto literal. Especialmente para Firefox, la diferencia es dramática.

La evaluación de la new Object() expresión new Object() requiere que la variable Object se resuelva antes de aplicar el new operador.

Podrías escribir:

var Objeto = función Foo () {};

var x = nuevo Object (); // Este `Objeto` se resolvería en` Foo`.

Más larga la cadena de alcance, más tiempo toma la resolución variable.

El objeto literal {} se resuelve inequívocamente al Object la plataforma, por lo que no se necesita la resolución variable.

El uso de un new Object() es altamente desaconsejado en la comunidad JavaScript moderna a favor del objeto literal {} .

Lo mismo se aplica a la new Array() y la matriz literal [] .

Para versiones anteriores de navegadores, los nuevos Object vs {} son ligeramente diferentes; Estoy pensando en IE 6 y 7.

More Interesting

¿Cuál es un buen sitio de recomendaciones para encontrar excelentes desarrolladores / codificadores de software en el Valle?

¿Qué idiomas debo aprender para convertirme en desarrollador de software y desarrollador de sitios web?

¿Qué tan difícil es obtener una visa H-1B después de completar MS en CS en los Estados Unidos?

¿Qué despertó su interés en el desarrollo de software?

¿A qué trabajos puedo cambiar después de un trabajo de desarrollador de software durante 6 años?

¿Cómo es un día en la vida de un desarrollador de software en Google?

Como ingeniero de software junior, ¿cuáles son las cosas que debo tener en cuenta cuando estoy construyendo un nuevo proyecto, de modo que pueda escalar?

Ir (lenguaje de programación): ¿Cómo puedo dejar de recibir de un canal que envía datos continuamente, después de un cierto tiempo?

¿Qué deben saber todos los gerentes no técnicos sobre la gestión de desarrolladores de software?

¿Cómo puede un desarrollador de software aprender nuevas tecnologías mientras realiza un trabajo a tiempo completo?

¿Cuáles son algunos hábitos o prácticas sociales de los equipos de desarrolladores de software que son insultantes para las mujeres?

¿Qué piensan los desarrolladores del anuncio de Cragislist 'Buscando dos malditos grandes desarrolladores'?

¿Cuáles son los temas que tuve que aprender para ser un gran hacker y desarrollador de software?

¿Cuál es la mentalidad requerida por un desarrollador de software para tener éxito en una empresa basada en productos?

¿Por qué es tan importante escribir pruebas para algunos desarrolladores? He sido desarrollador de software durante 8 años y nunca he escrito ninguna prueba. Simplemente depuro mi código cuando tengo errores y todos mis proyectos tienen éxito.