JavaScript-无法确定传递的对象名称

JavaScript-无法确定传递的对象名称,javascript,object,attributes,Javascript,Object,Attributes,无法确定如何获取传递对象的名称, 请考虑此代码: let a = {value: 9} a['JS'] = {value: 5} a['BS'] = {value: 3} check(a['JS']) function check(element) { console.log(element) // here I need to somehow determine that passed element has name `JS` // without using extra a

无法确定如何获取传递对象的名称, 请考虑此代码:

let a = {value: 9}
a['JS'] = {value: 5}
a['BS'] = {value: 3}

check(a['JS'])

function check(element) {
  console.log(element)
  // here I need to somehow determine that passed element has name `JS`
  // without using extra arguments
}
多谢各位

附加说明(element.constructor.name不起作用)

p.p.S。 找到了符合我需要的
解决方案:

let a = {value: 9}
a['JS'] = {value: 5}
a['BS'] = {value: 3}

Object.defineProperty(a['JS'], 'name', {
  enumerable: false,
  writable: true
})

a['JS'].name = 'JS'

check(a['JS'])

function check(element) {
  console.log(element)
}

您可以将外部对象交给您,并与检查

无法检查外部对象具有所需密钥的对象

功能检查(元素){
log('JS'在元素中);
控制台日志(元素);
}
设a={value:9,JS:{value:5},BS:{value:3};

控制台日志(检查(a))否,像我的示例中那样传递的对象无法传递parents,那么这是不可能的。检查我的解决方案当你执行['JS']时,你已经在传递它的值…要检查a是否有一个键JS应该是你的意思吗?不,不是,在递归函数中传递的子对象有上千个参数,我没有手动键入任何内容是的,无论你用这一千个参数做什么,你都在发送值,所以当你发送值时,它将是一个对象,正如我从问题中看到的??因此,您应该检查值本身中的键,就像nina所做的一样。您只是将属性名称添加到现有对象键中,以检查您刚才添加的名称。。。这与您所问的问题有多接近/
enumerable:false
是键,它使Object.keys()不可见,它创建了一个
hidden
属性,这类属性对我有效