¿Son los dos métodos de definición más o menos lo mismo? ¿Hay algo de lo que deba tener cuidado?
// A. function Dog(name, color, numLegs) { this.name = name; this.color = color; this.numLegs = numLegs; } Dog.prototype.greet = function() { return 'Bark!'; } // B. class Dog { constructor(name = '', color = '', numLegs = 0) { this.name = name; this.color = color; this.numLegs = numLegs; } greet() { return 'Bark!'; } }Estoy refactorizando una aplicación antigua y me pregunto si es seguro reestructurar todas las funciones de objetos existentes de (A) a (B) como se muestra arriba.
Una clase js es una forma embellecida de escribir su primer código. Entonces, sí, estas dos sintaxis hacen exactamente lo mismo.
class en JavaScript es un azúcar sintáctico de funciones constructoras. Cuando trabajas con funciones, estás lidiando con prototipos y herencia de prototipos, mientras que en una class se trata más de unir estas acciones dentro de un plano, que nuevamente hace uso de funciones y prototipos bajo el capó. En el primer caso, la función greet es una propiedad prototipo de la función Dog , lo que significa que la instancia de Dog podrá acceder al método greet , y lo mismo se aplica al segundo caso. (Asegúrese de utilizar la new palabra clave al instanciar objetos en ambos casos).