如何在JavaScript中获取对象的对象名称

时间:2019-02-15 22:09:20

标签: javascript object

这与如何获取键或值无关

在下面的示例中:

var exampleObject = {startIndex: 1, stopIndex: 2};

如何获得该对象的确切名称“ exampleObject”?我尝试过exampleObject.constructor.name,但结果却只有“ Object”。

2 个答案:

答案 0 :(得分:8)

您不能。*

首先,多个变量可以指向同一对象。变量仅是引用,而不是容器。没有一个对象的真实名称。这是一个示例:

function makeExample() () {
  var x = {startIndex: 1, stopIndex: 2};
  var y = x;
  return y;
}

var z = makeExample();

在上面的代码中,对象的 name 应该是什么? xyz?所有这些变量都不包含对象的副本,它们指向指向同一对象。 exampleObject是变量的名称,而不是对象的名称。

变量名只是程序员要使用的标签,而不是代码。这与属性不同,后者是存储在对象内部并由标识的数据,该键可以是字符串或符号。如果对象需要使用名称,则它应该是其自己的属性的一部分:

var exampleObject = { name: "exampleObject" };

*从技术上讲,在未作为模块执行的脚本的全局范围内使用var创建的任何变量都将添加到window对象中。那是过去的遗迹,您不应该依赖于此-实际上,现代JS代码应使用let创建不具有此行为的变量。

答案 1 :(得分:0)

我知道的唯一方法是使用此自定义功能:

var returnObjectName = function (object) {
  var objectName;
  for(var i in window){
    if(window[i] === object) {
      objectName = i;
    }
  }
return objectName;
}
(请注意,如果存在与您要查找的对象名称具有相同值的对象,此功能可能会混乱!)

如果我做错了什么,不仅要拒绝我的回答,还要告诉我我做错了什么。