如何在JavaScript中获取包含对象的变量的名称

How to get the name of the variable containing the object in JavaScript

本文关键字:对象 变量 包含 获取 JavaScript      更新时间:2023-09-26

我可以用下面的代码获得类的类名:

function MyClass() {
	return 42;   
}
var obj = new MyClass();
console.log(obj.constructor.name);

但是如何获得变量的名称呢?

你不能。

考虑:

function MyClass() {
    return 42;   
}
var obj = new MyClass();
var ob2 = obj;
var ob3 = obj;

现在有三个变量都具有相同的值。如果可能的话,你会得到哪一个?

在JavaScript中,变量与其值之间没有反向关系。

这个问题在很大程度上失败了。这种情况通常是在扫描对象以查找某些键/值对时使用。即使在你想通过所有全局/窗口变量培养的情况下,你仍然可以这样做:

for(var obj_name in window) { 
  if(window.hasOwnProperty && !window.hasOwnProperty(obj_name)) continue;
  console.log(obj_name);
  if(window[obj_name]) console.log(window[obj_name]);
}

试试这个

function MyClass() {
   return 42;   
}
var obj = new MyClass();
var name = /function (.{1,})'(/;
var results = (name).exec(obj.constructor);
if(results)
{
    console.log(results[1])
}