尽管我觉得这是一个奇怪的问题,但我想知道在JS对象,服务和类似的东西初始化时的常见做法。
对我来说,使用这样的难看的东西膨胀源文件感觉有点奇怪:
var initObject = {
foo: {
some: 'nice',
data: 'overhere'
},
bar: {
ate: 42
}
}
为了将其用于初始化
(我使用它来创建大型表格,因此代码实际上更加膨胀)
function awesomeFunc(data){
doSomeStuffwithData();
}
var needed = initObject.foo;
awesomeFunc(needed);
我应该存储此类数据服务器吗?或者我应该把它移到一个单独的文件中? 甚至有任何标准吗?
答案 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
关键字!
(否则该属性将成为全局对象或覆盖具有相同名称的现有对象)