Имя переменной в виде строки в Javascript - PullRequest
120 голосов
/ 05 января 2011

Есть ли способ получить имя переменной в виде строки в Javascript?(как NSStringFromSelector в Какао )

Я хотел бы сделать так:

var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);

--> myFirstName:John

ОБНОВЛЕНИЕ

Я пытаюсь подключить браузер и другую программу, используя JavaScript.Я хотел бы отправить имена экземпляров из браузера в другую программу для метода обратного вызова:

FooClass = function(){};
FooClass.someMethod = function(json) {
  // Do something
}

instanceA = new FooClass();
instanceB = new FooClass();
doSomethingInAnotherProcess(instanceB); // result will be substituted by using instanceB.someMethod();

...

Из другой программы:

evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");

В PHP: Как получить переменнуюимя как строка в PHP?

Ответы [ 14 ]

2 голосов
/ 13 октября 2016

Я нуждался в этом, не хотел использовать объекты и придумал следующее решение, перевернув вопрос.

Вместо преобразования имени переменной в строку, я преобразую строку в переменную.

Это работает, только если имя переменной известно.

Возьми это:

var height = 120;
testAlert(height);

Это должно отобразить:

height: 120

Это можно сделать так:

function testAlert(ta)
{
    a = window[ta];
    alert(ta + ': ' + a); 
}

var height = 120;
testAlert("height");
// displays: height: 120

Поэтому я использую строку "height" и превращаю ее в переменную height с помощью команды window[].

1 голос
/ 05 января 2011

Вы можете поразмышлять над типами в javascript и получить имя свойств и методов, но вам нужно что-то вроде Lambda Expressions Trees в .NET, я думаю, что это невозможноиз-за динамического характера и отсутствия статической системы типов в JavaScript.

0 голосов
/ 29 апреля 2019

Это работало с использованием Internet Explorer (9, 10 и 11), Google Chrome 5:

   
var myFirstName = "Danilo";
var varName = Object.keys({myFirstName:0})[0];
console.log(varName);

Таблица совместимости браузера:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

0 голосов
/ 05 января 2011

Нет, нет.
Кроме того, если вы можете написать variablesName(myFirstName), вы уже знаете имя переменной ("myFirstName").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...