Для второго вызова сработает следующее:
var f = function(a){
var _a = a;
return {
getA : function() {
return(_a);
},
setA : function(e){
_a = e;
}
}
};
Ваш код помещает статическое представление значения _a
в структуру данных, которую он возвращает, а не динамически получает свое значениеиз фактического источника.Вам нужна функция получения, чтобы динамически получить ее значение для всех типов данных.То, что у вас было бы, на самом деле работало бы, если бы _a содержало массив или объект (потому что они всегда по ссылке), но не тогда, когда это простой тип, такой как число или строка (который не является ссылкой).
Код, который я предложил, будет работать для всех значений _a
.