Это не то, что происходит. Проблема в том, что вы не объявляете свои переменные, поэтому JavaScript решает создать глобальные переменные для вас. Затем глобальное значение _params
перезаписывается при каждом вызове one
.
. Вот как исправить код, чтобы он работал так, как ожидалось:
const one = function(params) {
let _params = params;
var two = {
load: function(params) {
_params = params;
return this;
},
getHere: function() {
return _params.here;
}
};
return two.load(params);
};
const oldOne = new one({ here: 'here' });
console.log(oldOne.getHere());
const newOne = new one({ here: 'there' });
console.log(newOne.getHere());
console.log(oldOne.getHere());
Теперь каждый вызов one
объявит различные экземпляры _params
.