Javascript - 放置初始化数据的位置

时间:2014-04-17 11:26:47

标签: javascript architecture initialization

尽管我觉得这是一个奇怪的问题,但我想知道在JS对象,服务和类似的东西初始化时的常见做法。

对我来说,使用这样的难看的东西膨胀源文件感觉有点奇怪:

var initObject = {
  foo: {
    some: 'nice',
    data: 'overhere'
  },

  bar: {
    ate: 42
  }
}

为了将其用于初始化

(我使用它来创建大型表格,因此代码实际上更加膨胀)

function awesomeFunc(data){
    doSomeStuffwithData();
}

var needed = initObject.foo;

awesomeFunc(needed);

我应该存储此类数据服务器吗?或者我应该把它移到一个单独的文件中? 甚至有任何标准吗?

1 个答案:

答案 0 :(得分:3)

很多方法。更多内容将在ECMA6中发布。

首先,您是否考虑过使用构造函数?因为现在你只是操纵一个物体,如果你想拥有两个物体。您必须使用相同的内部值编写initObject2。

var InitObject = function () {
      this.foo: {
        some: 'nice',
        data: 'overhere',
      },
      this.bar: {
        ate: 42
      }
}

然后,您可以使用 new 关键字创建新对象。

var panda = new InitObject();

这基本上可以满足您的需求。但现在你可以创造很多。

var needed = panda.foo;
awesomeFunc(needed);

您可以使用原型函数来获取“需要”。

var InitObject = function () {
          this.foo: {
            some: 'nice',
            data: 'overhere',
          },
          this.bar: {
            ate: 42
          }
    }
InitObject.prototype.getFoo = function () {
return this.foo;
};

现在只需将原型函数传递给你的awesomeFunc。

awesomeFunc(getFoo());

我发现这很干净。使用.prototype。还节省了内存,因为所有 new InitObject都将使用该功能。

我个人继续github并查看那些在编程和构造代码方面比我好得多的人的代码。如果你想看到一些非常简洁易懂的代码,请看看这个: lodash.js

编辑:不要忘记属性前面的this关键字! (否则该属性将成为全局对象或覆盖具有相同名称的现有对象)