clojure を使用して 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でのこの動作が想定されていることは知っていますが、真のプライベート変数を作成するにはどうすればよいですか?