如何在Javascript中创建对象内部的对象

时间:2012-02-08 09:07:58

标签: javascript object

我正在尝试创建一个对象 - 其中的每个参数都是另一个对象:

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'}
    );

由于我收到错误,因此无效。我怎么需要写它才能使它工作?我应该将外部对象更改为数组吗?

感谢 阿龙

5 个答案:

答案 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 Objectnew 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]);