我一直在为大概六个月左右的工作角度,所以一直在使用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