Considere este fragmento de código
class A { constructor() { this._val = 5; } get val() { return this._val; } getVal() { return this._val; } } const a = new A(); console.log(`A.val: ${a.val}, A.getVal: ${a.getVal()}`); La obtención de _val del objeto a funciona tanto a través del descriptor de acceso get val() como del método regular getVal() . ¿Hay alguna diferencia entre los dos aparte de que el primero expone un valor de propiedad en a mientras que val getVal() es una función que se expone como una propiedad en a ? ¿Habría alguna consideración de directriz de codificación / rendimiento sobre cuándo adoptar uno sobre el otro?
Echa un vistazo a la diferencia:
class A { constructor() { this._val = 5; } get val() { return this._val; } getVal() { return this._val; } } const a = new A(); console.log(a); console.log(`A.val: ${a.val}, A.getVal: ${a.getVal()}`); class B { constructor() { this._val = 6; } getVal() { return this._val; } } const b = new B(); console.log(b); console.log(`B.val: ${b.val}, B.getVal: ${b.getVal()}`); Notarás que get expone _val directamente como una propiedad. La función es una función que accede a _val . Esa es realmente la única diferencia. Use get si solo desea que la propiedad sea accesible. Utilice la función si desea rellenar la variable antes de hacerla accesible, como formatear una fecha, por ejemplo.