如何向对象添加一个空数组?

How to add an empty array to object?

我在通过括号表示法将我的空数组添加到我的对象时遇到了问题。我知道如何通过点符号将我的空数组放入对象中,但我只是不明白为什么括号符号对我不起作用。

更新:我明白我的问题了;点符号和括号符号之间的上下文切换让我蒙蔽了双眼,我完全不记得在我的第三个块中 - 动物[噪声](忘记了“”)试图访问 属性 的 属性 值] 噪音,我还没有在我的对象中创建

为我的对象创建和添加属性

var animal = {};
animal.username = "Peggy";
animal["tagline"] = "Hello";

然后将创建这个:

animal {
      tagline: "Hello",
      username: "Peggy"
}

当我尝试将它添加到我的对象中时,为什么以下操作不起作用?

var noises = [];
animal[noises];

我在我的控制台中得到这个(同上):

animal {
      tagline: "Hello",
      username: "Peggy"
}

我是这样得到结果的:

animal.noises = [];

将此输出到我的控制台:

animal {
  noises: [],
  tagline: "Hello",
  username: "Peggy"
}

但这仍然留给我一个问题:为什么这不能通过括号表示法工作?

使用

animal.noises = noises;

animal['noises'] = noises;

当您使用 animal[noises]; 时,这意味着当您尝试从对象中读取数据时。

对于animal[noises],

  • animal是对象
  • noises是对象animal
  • 的key/property

并且数组不能作为键。如果你想将 noises 数组放入 animal 对象中,你可以按如下方式进行,

animal['noises'] = noises;

在你的情况下你必须尝试

animal['noises']=noises

数组 [] 符号用于获取需要引号的对象的 属性。数组符号通常用于获取具有特殊字符 included.say、

的对象的标识符
   var animal={
      "@tiger":'carnivore' // you can't have @tiger without quote as identifier
   } 
  console.log(animal.@tiger) // it will give ERROR
  console.log(animal['@tiger']) // it will print out  'carnivore'

this link has good explanation on array and dot notation .