在像 Java 这样的基于类的语言中,我有时会利用一个类的私有成员可以被同一个类的其他对象访问这一事实。例如,
class BitSet {
private int[] words;
public void and(BitSet set) {
for (int i = 0; i < words.length; i++)
words[i] &= (i < set.words.length) ? set.words[i] : 0;
}
}
现在,我正在使用构造函数模式使用 JavaScript 来创建“私有”成员:
function BitSet() {
var words = [];
this.and = function (set) {
// This is roughly what I'm trying to achieve.
for (i = 0; i < words.length; i++)
words[i] &= (i < set.words.length) ? set.words[i] : 0;
}
// This would solve the problem,
// but exposes the implementation of the object and
// clutters up the API for the user
this.getWord = function(index) {
return words[index];
}
}
我知道我可能应该以不同的方式处理这个问题(而不是那么面向对象)。有人对更好的模式有建议吗?