Следующая функция конструктора написана на JavaScript / ES5 -
function Range(from, to) {
function getFrom() { return from; }
function getTo() { return to; }
function setFrom(f) { from = f; }
function setTo(t) { to = t; }
Object.defineProperties(this, {
fromProp: { get: getFrom, set: setFrom, enumerable: true, configurable: false },
toProp: { get: getTo, set: setTo, enumerable: true, configurable: false }
});
};
Я создаю объект с помощью этого конструктора следующим образом -
var range = new Range(4, 13);
Мое общее понимание создания объекта заключается в том, что внутри конструктора должен быть некоторый код, который после создания экземпляра объекта range
инициализирует fromProp
и toProp
значениями, которые я передал через параметры конструктору. Но мне трудно понять, как именно это происходит здесь.
Или это все, что здесь происходит при инициализации / доступе к свойству, в закрытии вызова setter / getter? Но если так, то в любое время, когда я использую -
range.fromProp = 22;
значение 22 фактически никогда не устанавливается равным fromProp
свойству объекта range
, а вместо этого - переменной параметра from
, а затем всякий раз, когда я спрашиваю -
var fromValue = range.fromProp;
он просто передает мне текущее значение переменной параметра from
. Я правильно понял или что-то упустил?
Есть объяснения по этому поводу?