En este código simplificado, quiero dar a someGetters
un parámetro y devolver un texto específico, pero parece que los getters no pueden acceder a "this" del Objeto principal, "this" apunta a someGetters
.
var constants = { FLAG2: "testx2", FLAG4: "testx4", FLAG6: "testx6", someGetters: { get [this.FLAG2]() { // tried "this" but it points to someGetters return "Test Test" }, get [constants.FLAG4]() { // tried constants but it says it's not defined yet return "Test Test Test Test" }, get ["testx6"]() { // but this works return "Test Test Test Test Test Test" } } }; console.log(constants.someGetters[constants.FLAG2]) // expected result: Test Test
Tenga en cuenta que constants
se exportan desde otro archivo js llamado constants.ts
.
No puede hacer referencia a las propiedades del objeto hasta que haya terminado de construirlo. Por lo tanto, agregue someGetters
después de haber asignado constants
y luego consulte constants
en lugar de this
.
var constants = { FLAG2: "testx2", FLAG4: "testx4", FLAG6: "testx6", }; constants.someGetters = { get [constants.FLAG2]() { return "Test Test" }, get [constants.FLAG4]() { return "Test Test Test Test" }, get ["testx6"]() { // but this works return "Test Test Test Test Test Test" } } console.log(constants);