Espero una pregunta concreta en javascript.
Me gustaría usar una expresión de función como método de clase, pero no sé si es posible. Intenté buscar documentación al respecto pero no encontré... Este es un ejemplo:
class TourIdentifier extends HttpClient { constructor(baseURL, langCode, ...attr) { super({ baseURL, headers: { lang: langCode } }); this.model.init(...attr); } model = function init(...attr) { this.tours_identifiers_identifier = attr[0]; this.tours_id = attr[1]; this.lang_code = attr[2]; this.tours_id_ = attr[3]; this.tours_identifiers_id = attr[4]; }...
Sé que hay muchas maneras de hacer esto, pero solo tengo esta pregunta y espero que cualquier persona con más experiencia que yo en JS pueda compartir sus conocimientos.
¡Aprecio tus comentarios!
¡Saludos!
Esto es todo lo que necesita saber sobre la definición de métodos en las clases MDN , pero aquí está parte de mi explicación:
Básicamente, está tratando de definir un método en una clase (lo que requiere darle un nombre a este método) y luego asignarle una función con nombre. Esto funcionará, pero no podrá llamar al método de la clase usando el nombre de la función, pero podrá hacerlo usando el nombre del método.
Imagina que tienes un objeto y una función separada:
function func() {return 'Hello'} const obj = {};Y desea asignar la función a una de las propiedades del objeto que hará:
obj.myFunction = func;Y de ahora en adelante vas a llamar a la función desde el objeto así:
obj.myFunction();Pero, por supuesto, podemos asignar la función en la declaración del objeto:
function func() {return 'Hello'}; const obj = { myFunction: func }Y todavía va a llamar a la función desde el objeto de esta manera:
obj.myFunction();Y, por supuesto, puede declarar el funcionamiento nombrado en la declaración del objeto:
const obj = { myFunction: function func() {return 'Hello'} }Y todavía va a llamar a la función desde el objeto de esta manera:
obj.myFunction();Así que espero que veas a dónde voy... lo mismo se puede aplicar a las clases, ya que sabemos que son solo sintaxis de azúcar :) En resumen, esto es posible, pero el nombre de la función no será útil .
class foo { constructor() { //something } method = function init() { console.log('init 1'); } } const fooInstance = new foo(); fooInstance.method();