我正在尝试创建一个对象 - 其中的每个参数都是另一个对象:
var divTextPerScreenWidthMap = new Object(
{'360','click'},
{'480','click it'},
{'768','click it right'},
{'1024','you know you want to click it'},
{'1280','click this button which is very long will help you'}
);
由于我收到错误,因此无效。我怎么需要写它才能使它工作?我应该将外部对象更改为数组吗?
感谢 阿龙
答案 0 :(得分:8)
你有语法错误。
首先,object literal遵循以下语法:
var literal = {
"Name": "value",
"Array": [],
"NestedObject": {}
};
名称值分隔符是冒号,而不是逗号。
修改
以上代码可能会被重写如下
// declaration via array initializer
var myArray = [
// name : value syntax
{'360': 'click'},
// values separated by comma
{'480': 'click it'},
{'768': 'click it right'},
{'1024': 'you know you want to click it'},
{'1280': 'click this button which is very long will help you'}
]
但是此时你无法通过这样的名字来访问你的对象:
var firstObject = myArray[0];
// will throw an error
firstObject.360 = "not click";
您只能按照以下方式使用
firstObject["360"] = "not click";
因此,我建议您根据变量命名规则命名属性。
答案 1 :(得分:1)
在javascript对象中是一个简单的地图。最好使用文字{}而不是新的Object();
var myObj = {
prop : {},
prop2 : {}
}
答案 2 :(得分:0)
不要通过其构造函数创建Object
,请使用文字语法{}
。
此外,对象具有键和属性。您的对象似乎只有值。您的意思是使用Array
s吗?
答案 3 :(得分:0)
你完全忘记为你的价值观提供钥匙。如果您不想使用密钥,请使用数组:
var divFoo = [
[360, "click"],
[480, "click it"] // et cetera
];
这会给你一个数组数组。例如,divFoo[0][0] == 360
如果您想要密钥,请使用对象:
var divFoo = {
"360": "click",
"480": "click" // et cetera
}
这为您提供了简单的对象。 divFoo[360] == "click"
或者你可以使用一组对象来获得更多描述性:
var divFoo = [
{time: 360, text: "click"},
{time: 480, text: "click it"} // et cetera
];
在这种情况下,divFoo[1].text == "click it"
。
另外,一些提示:
new Object
或new Array
。他们是多余的。答案 4 :(得分:0)
将对象集合表示为数组是有意义的:
var divTextPerScreenWidthMap = [
{360:'click'},
{480:'click it'},
{768:'click it right'},
{1024:'you know you want to click it'},
{1280:'click this button which is very long will help you'}
];
您可以使用for循环迭代对象数组:
var i, value;
for (i=0; i < divTextPerScreenWidthMap.length; i++) {
value = divTextPerScreenWidthMap[i];
console.log(value);
};
或者,您可以将数据结构表示为一个对象:
var divTextPerScreenWidthMap = {
360:'click',
480:'click it',
768:'click it right',
1024:'you know you want to click it',
1280:'click this button which is very long will help you'
};
现在,如果你有一个屏幕宽度,你可以快速找回相应的消息:
var screenWdith = 360;
alert(divTextPerScreenWidthMap[screenWidth]);