假设我有一个这样的类(class)。
var foodData = Class.create({
initialize: function() {
this.foodType = {
"grains" : {
"item1" : "20",
"item2" : "60"
},
"liquod" : {
"item1" : "30",
"item2" : "90"
},
_someMethod: function(){
}
});
实际上,这个类相当大,有很多方法。我只想访问哈希“foodtype”中的数据。有没有一种方法可以让我进入并获得它,而无需创建一个新类并以这种方式阅读..ala
var newSomething = new foodData;
newSomething.foodType;
最佳答案
是的,您的访问权限应该如下所示:
var newSomething = new foodData();
newSomething.foodType;
你只需要调用构造函数即可。
但最好为它创建一个 getter,如下所示:
var foodData = Class.create({
initialize: function() {
var foodType = {
"grains" : {
"item1" : "20",
"item2" : "60"
},
"liquod" : {
"item1" : "30",
"item2" : "90"
}
};
this.getFoodType = function() {
return foodType;
};
},
_someMethod: function(){
}
});
这样您就可以防止有人更改它。 (虽然您应该返回 foodType 的克隆,但这应该让最终用户明白)。
如果您因 foodType 中的数据大小而遇到内存问题,那么您可以尝试此方法来创建静态变量 foodType。
var FoodData = (function() {
var foodType = {
"grains" : {
"item1" : "20",
"item2" : "60"
},
"liquod" : {
"item1" : "30",
"item2" : "90"
}
};
return new Class.create({
initialize : function() {
},
getFoodType : function() {
return foodType;
},
_doSomething : function() {
}
});
})();
现在,无论您创建多少个 FoodData 类,它们都将共享相同的数据。
var newSomething = new FoodData();
var anotherSomething = new FoodData();
newSomething.getFoodType() 与 anotherSomething.getFoodType() 相同
newSomething.doSomethingToData();
newSomething.getFoodType() 仍然与 anotherSomething.getFoodType() 相同
关于javascript - 我需要类中的数据 - 如何在不创建新类的情况下获取该数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9694683/