2011-11-16 36 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