¿Hay alguna manera de obtener un nombre de variable como una cadena en Javascript? (como NSStringFromSelector
en cacao )
Me gustaría hacer así:
var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);
--> myFirstName:John
ACTUALIZAR
Estoy tratando de conectar un navegador y otro programa usando JavaScript. Me gustaría enviar nombres de instancia desde un navegador a otro programa para el método de devolución de llamada:
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 otro programa:
evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");
En PHP: ¿Cómo obtener un nombre de variable como una cadena en PHP?
javascript
papa de pescado
fuente
fuente
variablesName(myFirstName)
, ya conoces el nombre de la variable". Estoy intentando, pero no puedo ...console.log("myvar = " + myvar);
una y otra vez, para cada variable.Respuestas:
Por lo general, usaría una tabla hash para una situación en la que desea asignar un nombre a algún valor y poder recuperar ambos.
fuente
obj
se imprimen comoname: value
pares. Pero el texto explicativo podría ser más claro.Como la respuesta de Seth, pero usa en su
Object.keys()
lugar:fuente
Puede usar la siguiente solución para resolver su problema:
fuente
En ES6, podría escribir algo como:
Realmente no es lo mejor, pero hace el trabajo.
Esto aprovecha la desestructuración de objetos de ES6.
Más información aquí: https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
fuente
let nameObject = {myVar}
muy útil! No parece estar documentada en ninguna parte. ¿Tienes algún enlace?)Sin embargo, creo que deberías hacer como "karim79"
fuente
x = 2; y = 2;
ox = {a:1}; b = x;
alertaría a cada uno de ellosvar foo = function f(){ f.x = 2; for(o in f){ if(f[o]===f.x) alert(o); } }
luego, la llamadaf()
alertará 'x'Esto funciona para expresiones básicas
Ejemplo
Retazo:
fuente
Probablemente pop sería mejor que indexar con [0], por seguridad (la variable puede ser nula).
fuente
Esto no se puede convertir en una función, ya que devuelve el nombre de la variable de la función.Editar: Gracias a @Madeo por señalar cómo convertir esto en una función .
Necesitará llamar a la función con una matriz de elementos únicos que contenga la variable.
debugVar({somefancyvariable});
Editar: se
Object.keys
puede hacer referencia como solokeys
en cada navegador en el que lo probé, pero de acuerdo con los comentarios, no funciona en todas partes.fuente
const getVarName = (v) => Object.keys(v)[0];
y luego llamar a la función asígetVarName({whatEverVariable})
Desde ECMAScript 5.1 puede usar Object.keys para obtener los nombres de todas las propiedades de un objeto.
Aquí hay un ejemplo:
fuente
Al tener una función, escriba una función que cambie los valores de diferentes variables globales, no siempre es mi nombre, es lo que sea que esté pasando. Prueba esto funcionó para mí.
Ejecutar en jsfiddle
Escribirá a la ventana 'jack'.
fuente
Puede reflexionar sobre los tipos en JavaScript y obtener el nombre de las propiedades y los métodos, pero lo que necesita es algo como
Lambda Expressions Trees
en .NET, creo que no es posible debido a la naturaleza dinámica y la falta de un sistema de tipo estático en JavaScript.fuente
Necesitaba esto, no quiero usar objetos, y se me ocurrió la siguiente solución, dando vuelta la pregunta.
En lugar de convertir el nombre de la variable en una cadena, convierto una cadena en una variable.
Esto solo funciona si se conoce el nombre de la variable, por supuesto.
Toma esto:
Esto debería mostrar:
Esto se puede hacer así:
Entonces uso la cadena
"height"
y la convierto en una variableheight
usando elwindow[]
comando.fuente
window
objeto porque la variable del mismo nombre se declaró en el ámbito de la ventana. Esto funciona solo si la variable se declara en el ámbito de la ventana, no en una función / cierre.El camino corto que he encontrado hasta ahora para obtener el nombre de las variables como una cadena:
fuente
Esto funcionó con Internet Explorer (9, 10 y 11), Google Chrome 5:
Tabla de compatibilidad del navegador:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
fuente
He creado esta función basada en JSON como alguien sugirió, funciona bien para mis necesidades de depuración
fuente
No no hay.
Además, si puede escribir
variablesName(myFirstName)
, ya conoce el nombre de la variable ("myFirstName").fuente
nameof(myVariable)
en C # (que devuelve una cadena "myVariable" es proteger contra errores al refactorizar o realizar otros cambios en el código. Un caso de uso común es agregar el nombre de la variable a un mensaje de error que se lanza. la mayor parte considero literales de cadena un olor código, y sospecha que es por lo menos de Visual Studio, los muestra en un color / rojo anaranjado que sé que sé, esta pregunta se trata de Javascript, pero me acaba de explicar por qué terminé aquí..console.log('test')
o cuándo realmente lo necesitarías.