有没有办法访问对象文字的名称?

Is there a way to access an object literal's name?

我有一个对象:

var Top = {
    'A':{},
    'b':{
        '1':'someText',
        '2':'someMoreText'},
    'C':{
        '3':'evenMoreText',
        '4':'thisIsGettingRedundant'},
    'D':'thisOneIsDifferent'}

我正在寻找一种方法来访问我的对象的名称,例如 Top[b].objectName 将 return 'Top' 作为字符串,我在一些嵌套的 for.. .in 循环,像这样:

for(thing in Top){
    for(piece in Top[thing]){
        console.log('Grabbing ' + Top[thing][piece] + ' from ' + MY_OBJECT_NAME_THAT_SHOULD_BE_TOP);
    }
}

我想我可以为每个对象添加一个标签以获取它们的名称(即将 A 从 {} 更改为 'Top'),但这对我来说似乎是多余的。

-编辑:

有没有办法记录我的二级对象名称 IE。甲、乙、丙?因为它们应该记录为数据而不是代码

const Top = {
  'A': {},
  'b': {
    '1': 'someText',
    '2': 'someMoreText'
  },
  'C': {
    '3': 'evenMoreText',
    '4': 'thisIsGettingRedundant'
  },
  'D': 'thisOneIsDifferent'
};

要实现这一点,请使用 for-in-loop 在顶层遍历所有键。如果键指向一个对象并且不等于 null(定义为 JavaScript 中的对象),则执行另一个 for-in-loop 以将每个项目记录到控制台中。如果顶级键指向空对象,则将空的弯曲括号记录到控制台。另一方面,如果顶级键指向非对象,则将其记录到控制台。

for(let key in Top) {
  if(typeof Top[key] === 'object' && Top[key] !== null) {
    for(let item in Top[key]) {
      console.log(`Grabbing ${Top[key][item]} from '${item}' within '${key}' in Top.`);
    }

    if(Object.keys(Top[key]).length === 0) {
      console.log(`Grabbing {} from '${key}' in Top.`);
    }
  } else {
    console.log(`Grabbing ${Top[key]} from '${key}' in Top.`);
  }
}