首页 > 解决方案 > 我应该在 javascript 中定义多少个嵌套对象?

问题描述

我是 javascript 新手。

这是我想要的例子!

     var obj = {
      a:{
       b:{
         c:{
             //so on
           }
         }
      }
    }

提前致谢。

标签: javascript

解决方案


在这里,我想知道我可以在 javascript 中定义多少个嵌套或内部对象

没有指定的限制。

对于对象初始化器,例如您展示的对象初始化器,最终您会遇到运行代码的特定 JavaScript 引擎的某种限制,例如,围绕它的初始化器解析/处理,但没有定义在规范。

如果您自己动态构建对象,例如这样:

// Don't run this code!
var obj = {};
while (true) {
    obj.child = {};
    obj = obj.child;
}

...没有理由相信除了与您正在创建的对象数量(而不是它们的嵌套)相关的内存限制之外,您还会遇到任何问题。

如何查找在js中定义了多少个对象键

在一个特定对象中,您可以通过and获取其自身(非继承)属性的数组,然后获取数组的 。要找出对象有多少属性以及它的属性引用的对象有多少,您可以使用递归搜索——但要注意循环结构。Object.getOwnPropertyNamesObject.getOwnPropertySymbolslength

例如:

const obj = {
  a: {
    b: {
      c: {
      }
    }
  }
};

function countProps(target, recursive = false) {
  const ownProperties = [
    ...Object.getOwnPropertyNames(target),
    ...Object.getOwnPropertySymbols(target)
  ];
  let count = ownProperties.length;
  if (recursive) {
    for (const key of ownProperties) {
      const value = target[key];
      if (value && typeof value === "object") {
        count += countProps(value, true);
      }
    }
  }
  return count;
}

console.log(countProps(obj, true));


推荐阅读