2012-02-08 48 views
0

里面创建对象的对象我试图创建一个对象 - 这里面每一个参数是另一个对象:如何在Javascript

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

您有一个语法错误。 – Oybek 2012-02-08 09:09:39

回答

0

不要通过其构造函数创建一个Object,用文字语法{}

而且,对象具有键和属性。你的物体似乎只有价值。你的意思是使用Array

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。它们是多余的。
  • 如果将它们用作值,则不需要引用整数。
1

在JavaScript对象是一个简单的地图。最好使用literal {}来代替新的Object();

var myObj = {  
    prop : {}, 
    prop2 : {} 
    } 
7

您有语法错误。

所有的第一对象字面如下的语法如下:

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'} 
] 

但是跟着你无法通过访问您的对象i'ts名这样上面的代码可能会被改写:

var firstObject = myArray[0]; 
// will throw an error 
firstObject.360 = "not click"; 

您只能如下使用它:

firstObject["360"] = "not click"; 

因此,我建议您根据变量命名规则命名属性。

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

你可以用遍历你的对象的数组循环:

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]);