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

dea*_*mer 1 javascript object

这不是关于如何获取键或值

在下面的示例中:

var exampleObject = {startIndex: 1, stopIndex: 2};
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到exampleObject这个对象的确切名称?" 我已经尝试了,exampleObject.constructor.name但我得到的只是" Object"结果.

Dom*_*ino 8

你不能.*

首先,多个变量可以指向同一个对象.变量只是引用,而不是容器.对象没有一个真正的名称.这是一个例子:

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

var z = makeExample();
Run Code Online (Sandbox Code Playgroud)

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

变量名只是程序员使用的标签,而不是代码.这与属性不同,属性是存储在对象内部并由(字符串或符号)标识的数据.如果对象需要有一个名称,那么它应该是它自己的属性的一部分:

var exampleObject = { name: "exampleObject" };
Run Code Online (Sandbox Code Playgroud)

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