2015-11-03 3 views
-2

я могу получить имя класса класса на код ниже:Как получить имя переменной, содержащей объект в JavaScript

function MyClass() { 
 
\t return 42; 
 
} 
 

 
var obj = new MyClass(); 
 

 
console.log(obj.constructor.name);

Но как получить имя переменная?

+0

Может быть, я ошибаюсь, но я не думаю, что вы не можете (если вы добавить свойство имя) –

+0

В этом звучит как проблема XY, почему вам нужно имя переменной? – Jamiec

+0

@Jamiec, чтобы избежать создания атрибута имени. –

ответ

1

Вы не можете.

Рассмотрим:

function MyClass() { 
    return 42; 
} 

var obj = new MyClass(); 
var ob2 = obj; 
var ob3 = obj; 

Есть теперь три переменные, все с тем же значением. Какой из них вы могли бы получить, если бы это было возможно?

Не существует обратной связи между переменной и ее значением в JavaScript.

+0

В вашем коде ob2 и ob3 являются ссылками на один и тот же объект: obj. Но если я намерен 3 раза, с «новым» ключевым словом, у меня есть 3 разных предмета правильно? –

+0

@ rickozoe - Да, но это не продемонстрировало бы мою точку зрения. – Quentin

+0

Потому что ваш вопрос не связан с моим вопросом, но да, признаюсь, я не сказал достаточно подробностей. У меня есть 4 объекта, экземпляр MyObject, и я хочу получить имя этих объектов, но я думаю, что я буду использовать массив или объект с атрибутом name. Благодарю. –

-1

Попробуйте

function MyClass() { 
    return 42; 
} 

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

Я получаю «MyClass». В чем дело, я задаю вопрос, а люди меня преследуют, потому что это невозможно или они не могут ответить. –

0

Этот вопрос побеждает себя в значительной степени. Вариант использования для этого обычно возникает при сканировании объекта для определенных пар ключ/значение. И даже в том случае, если вы хотите развивать через все глобальные/окна переменных, вы можете сделать:

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]); 
} 
Смежные вопросы