私はclojureを使ってjavascriptでプライベート変数を作る方法を知りました。しかし、Object.createを使用した場合でもクローンを作成してください。Javascriptのプライベート変数+ Object.create(クロージャ変数への参照)
var point = {};
(function(){
var x, y;
x = 0;
y = 0;
Object.defineProperties(point, {
"x": {
set: function (value) {
x = value;
},
get: function() {
return x;
}
},
"y": {
set: function (value) {
y = value;
},
get: function() {
return y;
}
}
});
}());
var p1 = Object.create(point);
p1.x = 100;
console.log(p1.x); // = 100
var p2 = Object.create(point);
p2.x = 200;
console.log(p2.x); //= 200
console.log(p1.x); //= 200
私はhttp://ejohn.org/blog/ecmascript-5-objects-and-properties/からこの技術を得たが、それはクロージャ変数は、すべてのオブジェクトで同じであることをこの制限を得ました。私はjavascript上でこの動作を知っているが、どのように私は本当のプライベート変数を作成できますか?
このコードでテストされましたが、自動生成されたに見えますか? – Raynos
いいえ、それはなぜそれが自動生成されたように見えると思いませんでしたか? – automaticoo
プライベート変数のない代替手段として、http://jsfiddle.net/heera/G9E9m/ –