Поскольку вам нужно использовать this
, но не хотите использовать функцию, вы можете использовать геттер. При первом вызове получатель генерирует значение и кэширует его на this._locations
. Отныне получатель вернет кэшированное значение.
const calcLocations = JSON.stringify;
const initialState = {
board: [
[-1, 1, -1, 1, -1, 1, -1, 1],
[1, -1, 1, -1, 1, -1, 1, -1],
[-1, 1, -1, 1, -1, 1, -1, 1],
[0, -1, 0, -1, 0, -1, 0, -1],
[-1, 0, -1, 0, -1, 0, -1, 0],
[2, -1, 2, -1, 2, -1, 2, -1],
[-1, 2, -1, 2, -1, 2, -1, 2],
[2, -1, 2, -1, 2, -1, 2, -1]
],
get locations() {
if(!this._locations) this._locations = calcLocations(this.board);
return this._locations;
}
};
console.log(initialState.locations);