是否可以在给定实例变量的情况下访问 javascript 中的私有(private)成员?例如,
function class Foo() {
var x=12;
// some other stuff
}
F = new Foo();
// how to get/set F.x?
更新:作为一个转折,假设该类有一个特权方法。是否有可能劫持该特权方法来访问私有(private)成员?
function class Foo() {
var x=12, y=0;
this.bar = function(){ y=y+1; }
}
F = new Foo();
// can I modify Foo.bar to access F.x?
最佳答案
您需要一个 privileged method获取/设置x
的值:
function Foo() {
var x = 12;
this.getX = function() { return x; };
this.setX = function(v) { x = v; };
}
var f = new Foo(),
g = new Foo();
f.getX(); // returns 12
g.getX(); // returns 12
f.setX(24);
f.getX(); // returns 12
g.getX(); // returns 24
g.setX(24);
f.getX(); // returns 24
g.getX(); // returns 24
关于javascript 封装 - 有什么方法可以访问给定实例的私有(private)成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5683595/