我一直在爲大概六個月左右的工作角度,所以一直在使用JSON和JavaScript中的對象工作很多。我遇到的這種情況一直令人沮喪,我不明白這個推理。也許這是我對JS的缺乏經驗,所以我不知道推理,或者我只是做錯了,但我會很感激任何洞察。爲什麼JS需要對象/數組存在
實例對象:
var data =
{
"object":
{
"Key":"Value",
"stuff":"here"
},
"array":
[
{
"Name":"Pizza Face",
"id":7
},
{
"Name":"Maple bar",
"id":1
}
]
}
所以,讓我們說,我想給一個對象添加到陣列中。很簡單,對吧?但是,假設我想在數組存在之前將對象添加到數組中。以上方法出錯說出Cannot read property 'push' of undefined
。相反,我必須在它周圍包裝一個條件。
var newObject = {"Name": "Master Sword", "id":2}
if(data.array){
data.array.push(newObject);
}
else{
data.array = [];
data.array.push(newObject);
}
我可以隨時將新對象添加到data
。然而,我應該嘗試在對象內添加一個對象。
例子:
data.newObject = {"Name": "Master Sword", "id":2}
NEWOBJECT會在這種情況下被創建和大家都高興。
data.newObject.Name = "Master Sword"
失敗! Cannot set property 'Name' of undefined
所以...爲什麼JS不是隻用創建的鍵值對創建newObject?或者當我嘗試推送到不存在的數組時,爲什麼不創建數組而不是錯誤?
我想澄清一下,雖然這對我來說是令人沮喪的,但是我的這個問題的目的不是爲了抱怨。這是要問我是否做錯了。在嘗試添加對象/數組之前,是否真的需要一個條件來檢查對象/數組是否存在?有一個更好的方法嗎?
這只是JavaScript的工作方式。您必須先定義一個對象,然後才能設置該對象的屬性。你會發現許多編程語言都是這樣的... – colti
「我想在數組存在之前將對象添加到數組中」。如果該數組不存在,那麼您可以添加什麼?我想你已經回答了你自己的問題。 – Andy
@colti所以正在創建條件檢查,看看這些數組/對象是否存在最好的/唯一的方法來做到這一點? – Aarmora