Gol*_*Aal 5 javascript oop class
我目前正在研究在JavaScript中构建类的不同模式.但不管我看到什么模式,还有一些我不太确定的事情.
var ItemManager = (function()
{
var p = function()
{
this.items= [];
};
p.prototype.addItem = function(item)
{
var self = this;
self.items.push(item);
};
return p;
}());
Run Code Online (Sandbox Code Playgroud)
我创建了简单的类ItemManager,这个类得到了addItem函数,用于将任何项添加到集合中.现在我真的不希望表示集合的变量项是公共的,这个变量应该是私有的,但我没有看到任何可能的方法来使用prototyped方法来访问私有变量.
那么这种情况下的最佳做法是什么?只是不使用私有变量?
var ItemManager = function() {
var items = [];
return {
addItem : function(item) {
items.push(item);
},
removeItem : function() {
return items.pop();
}
}
};
var myItemManager = new ItemManager();
Run Code Online (Sandbox Code Playgroud)
items
变量变成执行后隐藏的ItemManager
功能,但addItem
并removeItem
仍共享访问items
.有关进一步调查的内容,请参阅Douglas Crockford关于JavaScript中私有变量的文章.
tom*_*ker -1
正如 GoldenerAal 提到的,它们不称为类,而是您拥有的函数
var ItemManager = function (){
..
...
...
};
Run Code Online (Sandbox Code Playgroud)
你可以有:
function ItemManager(){
this.items = [];
function addItem(item){
...
};
};
Run Code Online (Sandbox Code Playgroud)
然后,仅当您需要时,您才可以创建 ItemManager 的实例:
var itemManager = new ItemManager();
itemManager.addItem(<something here>);
Run Code Online (Sandbox Code Playgroud)
http://javascript.crockford.com/private.html 函数内的变量仅具有该函数的作用域,该变量不是全局变量(静态变量)。