我目前正在研究用 JavaScript 构建类的不同模式。但无论我看到什么样的模式,仍有一些事情我不太确定。
var ItemManager = (function()
{
var p = function()
{
this.items= [];
};
p.prototype.addItem = function(item)
{
var self = this;
self.items.push(item);
};
return p;
}());
我创建了简单的类 ItemManager,该类获得了函数 addItem 用于将任何项目添加到集合中。现在我真的不希望代表集合的变量项目是公共(public)的,这个变量应该是私有(private)的,但我没有看到任何可能的方法来使用原型(prototype)方法来访问私有(private)变量。
那么在这种情况下最好的做法是什么?干脆不使用私有(private)变量?
最佳答案
var ItemManager = function() {
var items = [];
return {
addItem : function(item) {
items.push(item);
},
removeItem : function() {
return items.pop();
}
}
};
var myItemManager = new ItemManager();
items
变量在 ItemManager
函数执行后隐藏,但 addItem
和 removeItem
仍然共享访问权限到项目
。查看Douglas Crockford's article关于 JavaScript 中的私有(private)变量以供进一步调查。
关于JavaScript 类最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725504/