我想要一个包含子对象 S 的主对象 M,子对象 S 有一些方法 E,方法 E 有一个私有(private)变量 P。我还希望方法 E 可以通过另一个变量 V 访问 M。对于私有(private)变量,我是这样做:
M.S = function () {
var P,
V; // how to set V to M?
return {
E: function () {
// stuff goes here
}
}
}();
我想到的一个解决方案是去掉最后一行的(),然后调用匿名S-creating函数作为M的方法。这样就解决了问题,但我想可能还有更多优雅的方式去做。
M.S = function () {
var P,
V = this;
return {
E: function () {
// stuff goes here
}
}
};
M.S = M.S()
大多数情况下,我需要知道什么是好的做法,因为我是 Javascript 中私有(private)变量的新手。
最佳答案
一个非常简单的方法是:
M.S = function (V) { // <-- V is declared locally
var P;
return {
E: function () {
// stuff goes here
}
};
}(M);
V
是通过形参在本地声明的。 M
的引用被分配给 V
,通过 function(V){...}(M);
。
即使稍后重新声明 M
,V
仍会指向正确的对象。
关于javascript - 私有(private)变量和访问父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9218459/