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