我想在javascript类中创建一个静态数组,为此我做了:
var Manager = (function () {
function Manager() {
var ubications = new ArrayList();
this.ubicationsArray = function () {
return(ubication);
};
}
Manager.prototype.addUbication = function (ubication) {
Manager.ubicationsArray().add(ubication);
};
Manager.prototype.getUbication = function (index) {
return Manager.ubicationsArray().get(index);
};
Manager.prototype.sizeOfUbications = function () {
return Manager.ubicationsArray().size();
};
return Manager;
}());
Manager["__class"] = "Manager";
其中ubications是静态数组,函数ubicationsArray是访问数组的公共函数。
我尝试将此代码用于:
var ubication = new Ubication(123,456);
var manager = new Manager();
manager.addUbication(ubication);
alert(manager.sizeOfUbications());
但我收到了这个错误:
Uncaught TypeError: Manager.ubicationsArray is not a function
在javascript代码中使用静态数组的正确方法是什么?
答案 0 :(得分:0)
在构造函数中,this.ubicationsArray
为对象的实例赋予属性,而不是构造函数本身。
也许你想要这样的东西:
function Manager() {
}
var ubications = new ArrayList();
Manager.ubicationsArray = function () {
return(ubication);
};
请注意,此属性并非真正"私有"。这将是更私密的:
var Manager = (function () {
function Manager() {
}
var ubications = new ArrayList();
Manager.prototype.addUbication = function (ubication) {
ubications.add(ubication);
};
Manager.prototype.getUbication = function (index) {
return ubications.get(index);
};
Manager.prototype.sizeOfUbications = function () {
return ubications.size();
};
return Manager;
}());
Manager["__class"] = "Manager";
答案 1 :(得分:0)
目前,JavaScript只能在功能范围方面做隐私。
function Manager () {
}
Manager.prototype = (function (){
var ubications = [];
return {
addUbication: function (u) {
ubications.push(u);
},
getUbication: function (index) {
return ubications[index];
},
sizeOfUbications: function () {
return ubications.length;
}
};
})();