Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中获取变量的名称?_Javascript_Variables - Fatal编程技术网

如何在javascript中获取变量的名称?

如何在javascript中获取变量的名称?,javascript,variables,Javascript,Variables,可能重复: 不知道该如何解释。我希望在对象本身中获得变量名的字符串值 例如: var MyObject = function(){ var that = this; that.alertMyName = function(){ var name_of_instance = that.__name__; alert(name_of_instance); //hoping to retreive a string containing 'var1'? } };

可能重复:

不知道该如何解释。我希望在对象本身中获得变量名的字符串值

例如:

var MyObject = function(){
  var that = this;

  that.alertMyName = function(){
    var name_of_instance = that.__name__;
    alert(name_of_instance); //hoping to retreive a string containing 'var1'?
  }

};

var var1 = new MyObject();
var1.alertMyName();
如果你做了一个

用于(obj中的x){}

在javascript中的对象上,x保存对象属性/变量名的名称,我相信您可以通过这种方式获得所需的内容:)

如果您执行

用于(obj中的x){}


在javascript中的对象上,x持有对象属性/变量名的名称,我相信您可以通过这种方式获得所需的:)

不可能确定对象引用的任何变量的名称,无论如何在这个特定示例中都不可能。想象一下,有许多变量引用同一个对象的情况——在这种情况下,您希望返回什么?如果根本没有变量引用对象呢?(考虑表达式
newmyobject().alertMyName()
——该对象的名称应该是什么?)

如果要为对象命名,请使其显式:

var MyObject = function(name){
  var that = this;

  that.alertMyName = function(){
    alert(name);
  }

};

var var1 = new MyObject("var1");
var1.alertMyName();

不可能确定对象引用的任何变量的名称,无论如何在这个特定示例中都不可能。想象一下,有许多变量引用同一个对象的情况——在这种情况下,您希望返回什么?如果根本没有变量引用对象呢?(考虑表达式
newmyobject().alertMyName()
——该对象的名称应该是什么?)

如果要为对象命名,请使其显式:

var MyObject = function(name){
  var that = this;

  that.alertMyName = function(){
    alert(name);
  }

};

var var1 = new MyObject("var1");
var1.alertMyName();
哦,当然,这很容易(实际上是不可能的)。只需打印出代码,然后读取函数调用,然后写下变量名

代码变得稍微复杂一些,但在边缘情况下仍然可行。您必须解析调用函数的文档,该函数需要明确了解文档所在的位置。使用
$.ajax
调用,您可以将整个调用脚本或页面加载到一个变量中,然后使用滑动窗口进行解析,直到找到使用变量名的函数调用。但是,您必须确保找到的函数调用与当前实例相关。

哦,当然,这很容易(实际上是不可能的)。只需打印出代码,然后读取函数调用,然后写下变量名


代码变得稍微复杂一些,但在边缘情况下仍然可行。您必须解析调用函数的文档,该函数需要明确了解文档所在的位置。使用
$.ajax
调用,您可以将整个调用脚本或页面加载到一个变量中,然后使用滑动窗口进行解析,直到找到使用变量名的函数调用。但是,您必须确保找到的函数调用与当前实例相关。

值得思考:给定此代码,实例的“名称”是什么<代码>var var1=新的MyObject();VarVar2=var1;var1.alertMyName();var2.alertMyName()
var1
var2
都指向同一个对象。请注意,将逻辑绑定到变量名几乎总是一个糟糕的想法(我说几乎,但我还没有看到有效的用例)。在这个问题上有一个很好的讨论:值得思考的是:给定此代码,实例的“名称”是什么<代码>var var1=新的MyObject();VarVar2=var1;var1.alertMyName();var2.alertMyName()
var1
var2
都指向同一个对象。请注意,将逻辑绑定到变量名几乎总是一个糟糕的想法(我说几乎,但我还没有看到有效的用例)。在这个问题上有一个很好的讨论:不,你不能。这将枚举对象的属性,并且不包含引用对象的任何变量的名称。我明白了,你的观点,你上面的观点与我刚才的观点不同。您可以在每个实例上创建一个name属性,尽管这会解决它们的问题,就像在new MyObject(“name”)中一样。@Ryan它会重新定义它们的问题,但不能解决所述的问题:)足够公平。。。只是想帮忙:)不,你不能。这将枚举对象的属性,并且不包含引用对象的任何变量的名称。我明白了,你的观点,你上面的观点与我刚才的观点不同。您可以在每个实例上创建一个name属性,尽管这会解决它们的问题,就像在new MyObject(“name”)中一样。@Ryan它会重新定义它们的问题,但不能解决所述的问题:)足够公平。。。只是想帮忙:)