Я всегда думал о закрытии JavaScript как идеальный способ для инкапсуляции данных, что делает частные переменные. Но недавно я понял, что эта модель очень легко нарушаются эксплуатирующей ссылочная семантика:Можно ли обойти закрытие JavaScript для инкапсулирования данных?
function creator() {
var x = {
key: 3
};
return function() {
return x;
}
}
var instance = creator();
var y = instance();
y.key = 4;
//returns 4
//y is a refernce to x
console.log(instance());
Как я могу убедиться, что частная часть (переменная, определенные в рамках creator()
не может быть мутировали из-за пределы
Спасибо, именно то, что я искал. –
Это нормально, чувак! ;) – morels