1
我一直认为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