¿Cómo puedo obtener el nombre original de la variable por su prototipo? MyVar.name pero no está definido.
Tengo una función, por ejemplo, que obtiene el nombre de la variable original.
function varName(v) { return v.toString(); } Pero cuando lo llamo con objeto variable, devuelve [Object object] .
varName(window);Quiero hacer que devuelva el nombre de la variable original.
varName(window); // windowComo dijo @traktor, no se puede hacer, pero hay una solución disponible para usted:
Cree una función, para que pueda nombrar su variable:
foo = function(name) { this.name = name; }Y, al crear uno, llámalo:
var pear = new foo("pear");;TLDR
La respuesta corta pero negativa es que no se puede hacer. La creación de prototipos se aplica potencialmente a los valores almacenados en una variable, no a los nombres utilizados en el código para referirse a la variable. Si todavía tiene un problema insuperable, edite la pregunta para proporcionar más detalles sobre el problema real de codificación o diseño que aún persiste.
Nombres de variables
Un nombre de variable es un identificador utilizado para acceder a la ubicación donde se almacena el valor de la variable. No existe una relación inversa: el valor de una variable no contiene información sobre dónde se almacena.
Debido a que JavaScript admite la evaluación del tiempo de ejecución utilizando nombres de variables en expresiones, el compilador y el motor de tiempo de ejecución mantienen "enlaces" de nombres de variables con la ubicación donde se almacenan en la memoria. Dichos enlaces se almacenan en registros de entorno de funciones y globales. Sin embargo, no se puede acceder a la estructura y el contenido de los registros del entorno desde JavaScript. Ya no puede determinar el nombre de la variable en la que se podría haber almacenado un argumento de función antes de pasar a una función por valor que podría determinar en qué parte de una cadena de alcance de registros de entorno se definió una variable que se lee en el código.