节点如何处理对象的错误?

时间:2019-11-02 19:47:51

标签: node.js

我需要根据同样动态且在某种程度上是随机的信息动态创建JS对象。

我发现了if(例如):

var dynamicname = "xyz";
var obj = {};
var i = 0;
while (i < 10) {

   obj[dynamicname] = {[i] : "Sample text"};
   i++;
}

console.log(obj); //output :  {9 : "Sample text"}

这将阻止创建完全动态创建的对象,因为属性名称的值不能超过1。

除非我在这里完全遗漏了一点,否则这将使得使像我这样的对象或多或少地变得不可能。

  • 是否有这样/为什么的理由?
  • 我该如何制作所需的JS对象类型?

1 个答案:

答案 0 :(得分:3)

没有错误。您只是对什么是对象常量有误解。

每次您这样做:

var x = {}

它被编译为此:

var x = new Object();

这意味着您的行:

obj[dynamicname] = {[i] : "Sample text"}

已编译为:

obj[dynamicname] = new Object(); // this replaces previous value
obj[dynamicname][i] = "Sample text";

您要创建的只是一个对象,并继续向其添加名称为i的属性。因此代码应该是:

var dynamicname = "xyz";
var obj = {};
var i = 0;
obj[dynamicname] = {}; // create just one object
while (i < 10) {
   obj[dynamicname][i] = "Sample text"; // keep adding properties to the object
   i++;
}