Да, ваш доступ должен выглядеть следующим образом:
var newSomething = new foodData();
newSomething.foodType;
Вам просто нужен конструктор с именем all.
Но было бы лучше создать для него геттер, например так:
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(){
}
});
Таким образом, вы можете помешать кому-либо изменить его.(Несмотря на то, что вы должны вернуть CLONE из 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 ()