2011-11-16 40 views
3

说我希望对象是这样的:构建对象数组编程

var Book = { 
     title: "the catcher in the rye", 
     price: "80.98", 
     characters: [{name: "holden caulfield", age: 16, height:"6.2"}, 
        {name: "phoebe caulfield",age:13, height: "5"}] 
    }; 

EDITED

问题: 字符数组是通过添加一个字符一个接一个建成。在确保名称,年龄和身高属性如上定义时,如何做到这一点。

有什么影响?

Book.characters.add({name: "phoebe caulfield",age:13, height: "5"}); 

我想能够以编程方式定义这个,即添加属性的对象,而不是像这样定义它。

这可能吗?

+1

我不明白,是不是你以编程方式定义属性*已经*? – NullUserException

+1

非常挑剔:这是一个对象字面值,而不是JSON对象。 JSON要求键也用引号(“title”)。 – Corbin

+0

我编辑了问题 – sarsnake

回答

6

你能做到在动态代码(而不是静态的声明)是这样的:

var Book = {}; 

Book.title = "the catcher in the rye"; 
Book.price = "80.98"; 
Book.characters = []; 
Book.characters.push({name: "holden caulfield", age: 16, height: "6.2"}); 
Book.characters.push({name: "phoebe caulfield", age: 13, height: "5"}); 
2

你的意思是这样吗?

var Book = {}; // empty object 

Book.title = "the catcher in the rye"; 
Book.price = 80.98; 
Book.characters = []; 

var character = { 
    "name": "holden caulfield", 
    "age": 16, 
    "height": 6.2 
}; 

Book.characters.push(character); 
0
var Book={}; 
Book.title="the catcher in the rye"; 
Book.price="80.98"; 
var characters=[]; 
characters.push({name: "holden caulfield", age: 16, height:"6.2"}); 
characters.push({name: "phoebe caulfield",age:13, height: "5"}); 
Book.characters=characters; 

...等。

0

当然是! Javascript是一种完全动态的语言 - 如果你想要一个对象的新属性,只需设置它!

例如

var myObject = {}; // empty object 
myObject.myProperty = 5; // creates the new property and sets it to 5. 
myObject.nestedObject = { prop1: 6, 'long-property-name': 'lolcats' }; 
0

我认为你正在寻找一个JSON stringifier: http://www.json.org/js.html

这将允许你创建你的对象:

var myobj = { }; 
myobj.myprop = "value"; 
alert(JSON.stringify(myobj)); 
+0

对不起,令人困惑......问题是关于对象而不是json。我将修改问题的标题。 – sarsnake