Existe uma maneira de obter um nome de variável como uma string em Javascript? (como NSStringFromSelector
no cacau )
Eu gostaria de fazer assim:
var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);
--> myFirstName:John
ATUALIZAR
Estou tentando conectar um navegador e outro programa usando JavaScript. Gostaria de enviar nomes de instâncias de um navegador para outro programa para o método de retorno de chamada:
FooClass = function(){};
FooClass.someMethod = function(json) {
// Do something
}
instanceA = new FooClass();
instanceB = new FooClass();
doSomethingInAnotherProcess(instanceB); // result will be substituted by using instanceB.someMethod();
...
De outro programa:
evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");
No PHP: Como obter um nome de variável como uma string no PHP?
javascript
batata de peixe
fonte
fonte
variablesName(myFirstName)
, já sabe o nome da variável". Estou tentando, mas não posso ...console.log("myvar = " + myvar);
várias variáveis para fins de depuração e não sinta vontade de digitar manualmente repetidamente, para cada variável.Respostas:
Normalmente, você usaria uma tabela de hash para uma situação em que deseja mapear um nome para algum valor e conseguir recuperar os dois.
fonte
obj
são impressas comoname: value
pares. Mas o texto explicativo pode ser mais claro.Como a resposta de Seth, mas usa
Object.keys()
:fonte
Você pode usar a seguinte solução para resolver seu problema:
fonte
No ES6, você poderia escrever algo como:
Não é realmente a coisa mais bonita, mas faz o trabalho.
Isso aproveita a destruição de objetos do ES6.
Mais informações aqui: https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
fonte
let nameObject = {myVar}
tão útil Ele não parece ser documentado em qualquer lugar Tem alguma links!.?No entanto, acho que você deveria gostar de "karim79"
fonte
x = 2; y = 2;
oux = {a:1}; b = x;
seria alertar cada um delesvar foo = function f(){ f.x = 2; for(o in f){ if(f[o]===f.x) alert(o); } }
em seguida, chamarf()
alerta vontade 'x'Isso funciona para expressões básicas
Exemplo
Snippet:
fonte
Provavelmente pop seria melhor do que indexar com [0], por segurança (a variável pode ser nula).
fonte
Isso não pode ser transformado em uma função, pois retorna o nome da variável da função.Edit: Obrigado ao @Madeo por apontar como transformar isso em uma função .
Você precisará chamar a função com uma matriz de elemento único contendo a variável.
debugVar({somefancyvariable});
Edit:
Object.keys
pode ser referenciado comokeys
em todos os navegadores em que o testei, mas de acordo com os comentários, ele não funciona em todos os lugares.fonte
const getVarName = (v) => Object.keys(v)[0];
e então chamar a função assimgetVarName({whatEverVariable})
Desde o ECMAScript 5.1, você pode usar Object.keys para obter os nomes de todas as propriedades de um objeto.
Aqui está um exemplo:
fonte
Ao ter uma função, escreva uma função que altere diferentes valores de variáveis globais, nem sempre é meu primeiro nome; é o que quer que esteja passando. Tente isso funcionou para mim.
Executar em jsfiddle
Irá escrever na janela 'jack'.
fonte
Você pode refletir sobre os tipos em javascript e obter o nome das propriedades e métodos, mas o que você precisa é sth como
Lambda Expressions Trees
no .NET, acho que não é possível devido à natureza dinâmica e à falta de sistema de tipo estático em javascript.fonte
Eu precisava disso, não quero usar objetos e vim com a seguinte solução, revertendo a questão.
Em vez de converter o nome da variável em uma sequência, eu converto uma sequência em uma variável.
Isso só funciona se o nome da variável for conhecido, é claro.
Pegue isso:
Isso deve exibir:
Isso pode ser feito assim:
Então eu uso a string
"height"
e a transformo em uma variávelheight
usando owindow[]
comandofonte
window
objeto porque a variável de mesmo nome foi declarada no escopo da janela. Isso funciona apenas se a variável for declarada no escopo da janela, não em uma função / fechamento.Shorts maneira que eu encontrei até agora para obter o nome das variáveis como uma string:
fonte
Isso funcionou usando o Internet Explorer (9, 10 e 11), Google Chrome 5:
Tabela de compatibilidade do navegador:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
fonte
Eu criei essa função com base no JSON, como alguém sugeriu, funciona bem para minhas necessidades de depuração
fonte
Não, não há.
Além disso, se você pode escrever
variablesName(myFirstName)
, já sabe o nome da variável ("myFirstName").fonte
nameof(myVariable)
em C # (que retorna uma string "myVariable", é proteger contra erros ao refatorar ou fazer outras alterações no código. Um caso de uso comum é adicionar o nome da variável a uma mensagem de erro sendo lançada. a maioria das peças que eu considero seqüência literais um cheiro de código, e suspeito que é por isso que, pelo menos, Visual Studio, mostra em uma cor / laranja vermelha eu sei eu sei, esta questão é sobre Javascript, mas eu acabei de explicar por que eu acabei aqui..console.log('test')
ou quando você realmente precisa disso.