Редактировать: я заменил свой первоначальный пример на что-то ближе к моему фактическому коду, который все еще демонстрирует ту же проблему (как на JSFiddle, так и на площадке TypeScript).
Скажем, у меня есть класс Typescript, определенный ниже, где одно свойство доступно геттеру, вложенному в другое свойство объекта. Очевидно, что this
внутри геттера weekdays.monday
ссылается на weekdays
, а не actual
.
class DayOfWeekSelector {
private actual = {
monday: false,
/*tuesday - sunday would go here*/
}
public weekdays = {
get monday() {
return this.actual.monday;
},
set monday(newVal) {
this.actual.monday = newVal;
},
/*tuesday - sunday would go here*/
}
}
const dow = new DayOfWeekSelector();
//I want this to read the value of the 'monday' property of the private 'actual' object
//but instead, it tries to read 'actual' as a property of 'weekdays', and fails
console.log(dow.weekdays.monday);
JSFiddle link: https://jsfiddle.net/dimmreaper/4v6k6ssx/
Я знаю, что в этой простой демонстрации я мог бы просто извлечь геттер из объекта в свойство непосредственно в классе, и тогда this
будет ссылаться на класс. Но есть ли другой способ доступа к свойствам DayOfWeekSelector
из методов получения и установки в другом объекте класса, без добавления беспорядка?