По сути, я хочу иметь возможность получить доступ к свойству объекта по ссылке.Посмотрите на приведенный ниже код:
class Point{
x:number;
y:number;
constructor(x,y)
{
this.x=x;
this.y=y;
}
}
const a = { first: new Point(8,9), second: new Point(10,12) };
let someBool = true;
function modifyProperty(a) {
let c = someBool? a.first: a.second;
let newPoint = new Point(0,0);
c = newPoint; // Doesn't work
someBool = !someBool;
}
modifyProperty(a);
console.log(a.first);
В этом примере всякий раз, когда я вызываю modifyProperty (), я хочу переключаться между изменением одного из двух свойств в «a».
ОднакоКогда я присваиваю 'c' либо 'a.first', либо 'a.second', он проходит только по значению.Единственный способ решить эту проблему - сделать собственное свойство объектом, например:
const a = { first: {value: new Point(8,9)}, second: {value: new Point(10,12)} };
И тогда я просто вызову c.value = newPoint
.Это будет работать, но это не очень хорошее решение, поскольку вам придется делать это для каждого свойства объекта.
Нет ли лучшего способа получить эти свойства по ссылке?Я знаю, что JS поддерживает только передачу по ссылке для объектов и массивов, но как насчет экземпляров классов?
Я знаю, когда Babel преобразует класс в обычный Javascript, они рассматриваются как функции, но функция не является примитивным типом - это объект, который можно вызвать, так что это не работает, и что будетрешение?