У меня есть следующий код:
var o = {};
o.a = 1;
var _value = 1;
Object.defineProperty(o,"a",{
set: function(value){
_value = value + 1;
console.log("log: ", value, _value);
return _value;
},
get: function(){
return _value;
}
});
В методе установки я увеличиваю значение _value
на единицу, прежде чем вернуть его. Поэтому, если я установлю oa = 5
, я ожидаю, что консоль напечатает 6
(хотя я понимаю, что возвращать значение из установщика обычно не имеет смысла). Однако, как показано в следующем фрагменте, консоль печатает 5
:
> o.a = 5;
log: 5 6 // from console.log;
5 // return; why does it == value and not value + 1?
> o.a;
6
> var i = o.a = 5;
> i;
5
> o.a;
6
Итак, мой вопрос, почему он возвращает 5
а не 6
?
Я надеюсь, что это не потому, что я сделал глупую ошибку в коде.