javascript - 我需要类中的数据 - 如何在不创建新类的情况下获取该数据?

标签 javascript jquery prototypejs

假设我有一个这样的类(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/

相关文章:

javascript - 获取匹配日期的 MongoDB 项目

javascript - selenium 中是否有任何方法可以查找我们必须查找的元素的标签类型

javascript - 相同的类 : Select child but not parent in Jquery

javascript - 使用 jquery 将 li 添加到现有的 ul

php - 运行 2 个 ajax 进程的 AJAX(原型(prototype)/php)挂起,直到第一个进程完成

javascript - JS - 使用 Ajax 获取文件名

javascript - 如何在 div 上制作原型(prototype)?

javascript - 根据搜索显示 div

javascript - 提交时反转复选框 : Set HTML form value only if checkbox is unchecked

javascript - 如何从 Ajax 响应中执行主窗口中定义的 Javascript 函数