Есть ли способ получить имя переменной в виде строки в 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");");
javascript
рыбный картофель
источник
источник
variablesName(myFirstName)
, вы уже знаете имя переменной». Я пытаюсь, но я не могу ...console.log("myvar = " + myvar);
снова и снова для каждой переменной.Ответы:
Обычно вы используете хеш-таблицу для ситуации, когда вы хотите отобразить имя на какое-то значение и иметь возможность получить оба.
источник
obj
печатаютсяname: value
парами. Но поясняющий текст может быть более понятным.Как и ответ Сета, но
Object.keys()
вместо этого используется :источник
Вы можете использовать следующее решение для решения вашей проблемы:
источник
В ES6 вы могли бы написать что-то вроде:
Не самая лучшая вещь, но она выполняет свою работу.
Это усиливает разрушение объектов ES6.
Более подробная информация здесь: https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
источник
let nameObject = {myVar}
настолько полезна! Кажется, что это нигде не задокументировано. Есть какие-нибудь ссылки?Тем не менее, я думаю, что вы должны сделать как "karim79"
источник
x = 2; y = 2;
илиx = {a:1}; b = x;
это предупредит каждого из нихvar foo = function f(){ f.x = 2; for(o in f){ if(f[o]===f.x) alert(o); } }
тогда вызовf()
вызовет предупреждение 'x'Это работает для основных выражений
пример
Отрывок:
источник
Возможно, pop будет лучше, чем индексирование с помощью [0], для безопасности (переменная может быть нулевой).
источник
Это нельзя сделать функцией, так как она возвращает имя переменной функции.Редактировать: Спасибо @Madeo за указание, как сделать это в функцию .
Вам нужно будет вызвать функцию с одним массивом элементов, содержащим переменную.
debugVar({somefancyvariable});
Редактировать:
Object.keys
можно ссылаться какkeys
на любой браузер, в котором я его тестировал, но, согласно комментариям, он работает не везде.источник
const getVarName = (v) => Object.keys(v)[0];
а затем вызывать такую функциюgetVarName({whatEverVariable})
Начиная с ECMAScript 5.1 вы можете использовать Object.keys для получения имен всех свойств объекта.
Вот пример:
источник
Когда есть функция, пишите функцию, которая изменяет значения различных глобальных переменных, это не всегда myfirstname, это то, что происходит через. Попробуйте это сработало для меня.
Запустить в jsfiddle
Пишет в окошко «домкрат».
источник
Вы можете поразмышлять о типах в javascript и получить имя свойств и методов, но то, что вам нужно, это как
Lambda Expressions Trees
в .NET, я думаю, что это невозможно из-за динамического характера и отсутствия статической системы типов в javascript.источник
Я нуждался в этом, не хотел использовать объекты и придумал следующее решение, перевернув вопрос.
Вместо преобразования имени переменной в строку я преобразую строку в переменную.
Это работает, только если имя переменной известно, конечно.
Возьми это:
Это должно отобразить:
Это можно сделать так:
Поэтому я использую строку
"height"
и превращаю ее в переменнуюheight
с помощьюwindow[]
команды.источник
window
объекта, потому что переменная с тем же именем была объявлена в области видимости окна. Это работает, только если переменная объявлена в области видимости окна, а не в функции / замыкании.Короткий путь, который я нашел, чтобы получить имя переменной в виде строки:
источник
Это работало с использованием Internet Explorer (9, 10 и 11), Google Chrome 5:
Таблица совместимости браузера:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
источник
Я создал эту функцию на основе JSON, как кто-то предложил, отлично работает для моих потребностей отладки
источник
Нет, нет
Кроме того, если вы можете написать
variablesName(myFirstName)
, вы уже знаете имя переменной («myFirstName»).источник
nameof(myVariable)
в C # (который возвращает строку «myVariable»), заключается в защите от ошибок при рефакторинге или внесении других изменений в код. Обычный вариант использования - добавить имя переменной в выдаваемое сообщение об ошибке. большинство частей я считаю строковые литералы коды запаха, и подозревает , что именно поэтому по крайней мере , Visual Studio, показывает их в красном / оранжевом цвете , я знаю , я знаю, этот вопрос о Javascript, но я объяснил , почему я закончил здесь..console.log('test')
когда вам это действительно нужно.