Javascript getVariableName

Javascript getVariableName,javascript,metaprogramming,metasyntactic-variable,Javascript,Metaprogramming,Metasyntactic Variable,这是我的第一篇文章 我正在尝试使用javascript进行一些基本的元编程,我想知道是否有一种方法可以获取特定对象的id,并使用该id访问变量名,或者只获取特定对象的变量名。我想重新创建一个场景,首先创建网页中的每个html,并将与特定类(例如类Person)关联的事件附加到一些html标记中。例如:假设下一个代码: var someFunction = function(someText){alert(someText);} function SomeClassFunction(){

这是我的第一篇文章

我正在尝试使用javascript进行一些基本的元编程,我想知道是否有一种方法可以获取特定对象的id,并使用该id访问变量名,或者只获取特定对象的变量名。我想重新创建一个场景,首先创建网页中的每个html,并将与特定类(例如类Person)关联的事件附加到一些html标记中。例如:假设下一个代码:

var someFunction = function(someText){alert(someText);}
function SomeClassFunction(){
     this.aClassFunction = someFunction;
}

var aVariableName = new SomeClassFunction();
在HTML代码中,假设我有下一段代码

<html>
  <head>
    <title></title>
  </head>
  <body>
    <div onclick="aVariableName.aClassFunction('Some text to show in alert');">
    </div>
  </body>
</html>

然后,正如您可能注意到的,onclick事件使用了我之前创建的aVariableName,但因为我首先创建变量的名称,然后在代码中附加该名称,所以我知道aVariableName是该对象的名称。我想做或实现的是在不知道特定对象的变量名的情况下用html创建上面的文本。我曾在网上冲浪,但不幸的是,我没有找到任何关于它的信息。

一般来说,没有-您也无法获得特定变量的名称或其id

如果你真的想,可能会用异常和堆栈跟踪来做坏事来获取信息……但我不知道该怎么做

编辑:我假设“变量ID”是指“该变量引用的对象的唯一标识符”,就像Python的内置ID一样:


通常情况下,否-您也无法获取特定变量的名称或其id

如果你真的想,可能会用异常和堆栈跟踪来做坏事来获取信息……但我不知道该怎么做

编辑:我假设“变量ID”是指“该变量引用的对象的唯一标识符”,就像Python的内置ID一样:


我不能100%确定我是否正确理解您关于元编程的问题,但通常您会将事件处理程序附加到DOM元素的click事件,然后您可以检查处理程序中元素的属性

JavaScript中有两件事可以促进元编程:eval允许您解释任意代码,因此您可以构建一个代码字符串并对其进行评估。安全问题很多。您还可以通过索引或名称访问对象的属性,例如

aVariableName.aClassFunction

aVariableName["aClassFunction"]

希望这能有所帮助。

我不能100%确定我是否正确理解您关于元编程的问题,但通常您会将事件处理程序附加到DOM元素的click事件,然后您可以检查处理程序中元素的属性

JavaScript中有两件事可以促进元编程:eval允许您解释任意代码,因此您可以构建一个代码字符串并对其进行评估。安全问题很多。您还可以通过索引或名称访问对象的属性,例如

aVariableName.aClassFunction

aVariableName["aClassFunction"]

希望这能帮上忙。

我不知道如何从代码中获取变量名,而不做大量的解析工作,这会让事情变得一团糟,我会为此向某人开枪

var someValue;
var foo = function() { someValue; }
alert((foo + '')); // this is now a string, use substr to extract variable name

你知道你可以在javascript someElement.onclick=someFunction中设置这样的事件,这样如果你只需要设置一个事件处理程序,你就不需要知道变量的名称了。

我不知道如何从代码本身获取变量的名称,而不需要做大量的解析工作,这会变得很混乱,我会为此向某人开枪

var someValue;
var foo = function() { someValue; }
alert((foo + '')); // this is now a string, use substr to extract variable name

您知道,您可以在javascript someElement.onclick=someFunction中设置这样的事件,这样,如果您所做的只是设置事件处理程序,您就不需要知道变量的名称。

您所说的完全正确,但是,我正在寻找我在问题中提到的选项。我想做一些自动化的代码,也许你说的很有效,但是,考虑到这一点:我不想做深度匿名的函数。我想试试别的办法。但是你所说的真的很有效,而且效果很好。如果我找不到其他东西,我想我必须使用你指的东西。你说的完全正确,但是,我正在寻找我在问题中提到的选项。我想做一些自动化的代码,也许你说的很有效,但是,考虑到这一点:我不想做深度匿名的函数。我想试试别的办法。但是你所说的真的很有效,而且效果很好。如果我找不到任何其他东西,我想我必须使用你所指的。是的,正如你和jasper所说,我们都同意将事件处理程序附加到VAR的可能性,这通常是我们在pro中使用代码的第一件事,但这也会影响我想做的事情。使用大量的元类,或者单例类作为ruby的概念,是我想要做的,这是错误的,是不可能做到的。想象一下javascript还没有出现
t内置匿名类-单例,特征,元类-你怎么能做到这一点。我唯一想做的事情就是下载webkit并尝试在javascript解释器中实现这样的东西。是的,正如您和jasper所说,我们都同意将事件处理程序附加到VAR的可能性,这通常是我们在pro中使用代码的第一件事,但这也影响了我想做的事情。使用大量的元类,或者单例类作为ruby的概念,是我想要做的,这是错误的,是不可能做到的。想象一下,javascript还没有在匿名类中构建——singleton、eigen、meta类——您怎么能做到这一点呢。我唯一想做的事情就是下载webkit并尝试在javascript解释器中实现这样的东西。