我设置了一个在javascript中运行rss feed的图库查看器,我试图尽可能减少应用程序用户的知识负担。有一个单独的javascript文件,它将所有自定义数据与应用程序分开存放,然后由默认参数对象扩展对象数组,这样用户只需输入他们想要为每个库更改的变量,而是新的必须为每个对象创建一个至少进入rss路径的对象。
目前默认变量看起来像
var default = { id:'x', path:"", row:1, col:5 (etc)}
我已经设置了customVars脚本,因此自定义数据是一个看起来像这样的对象数组
var customVars = [
albumList = {
path :"http://",
displayType : "list"
},
album1 = {
path : "http://",
rows : 1 , col : 6
}
];
编辑(重要) - 我需要能够以有效的方式遍历customVars数据,特别是当我不知道他们创建的专辑对象的名称时 - 换句话说,customVars [ 1] .rows需要能够返回1
这是实现这个目标的正确方法吗?我是否会遇到奇怪的错误,或者有更好的方法来实现这一目标吗?是否可以在数组中声明这样的对象(我试图避免让用户声明变量然后让它们自己设置数组
EDIT2
将其更改为一个对象数组并添加到参数列表中的变量id,这似乎现在正常工作 - 仍然不确定我是否可以这种方式声明对象,但我需要能够遍历对象列表
var customVars = [
{
id : 'album0',
path : "https://",
rssType : "picasaAlbum" , displayType : "list"
},
{
id : 'album1',
path :"https://",
rows : 1 , collumns : 5
}
];
答案 0 :(得分:0)
你不能在数组中声明abc = something。你可以像这样重写它:
var customVars = [
{
albumList: {
path :"http://",
displayType : "list"
},
album1: {
path : "http://",
rows : 1 , col : 6
}
},
{
albumList: {
path :"http://",
displayType : "list"
},
album1: {
path : "http://",
rows : 1 , col : 6
}
}]
这是一个正确的内联javascript对象创建,即使很多人认为它是json:)
答案 1 :(得分:0)
我认为更易读和可维护的结构是使用对象而不是数组。类似的东西:
var customVars = {
albumList : { path :"http://",
displayType : "list"
},
album1 : { path : "http://",
rows : 1,
col : 6
}
};
我从来没有见过用于声明变量的语法,只要将它们包含在数组中即可。我想它会起作用(我不能费心去尝试它;我假设你已经有了)因为每个数组元素仍然是一个表达式,但我不喜欢它因为我认为它在将来的维护中可能会让人困惑,而且它会创建albumList
和album1
作为全局变量。我(几乎)不会在没有var
语句的情况下声明变量,即使我想要它们是全局的,因为它很容易引入难以发现的错误。
答案 2 :(得分:0)
为什么不在Object中使用实际数组?如果你要有一个列表,你应该使用一个数组,这样你就可以迭代它们。
var customVars = {
albumList : {
path :"http://",
displayType : "list",
albums:[{
name:"album1:,
path : "http://",
rows : 1,
col : 6
},
{
name:"album2:,
path : "http://",
rows : 1,
col : 6
}
]}
};