2

这是我的第一篇文章。

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

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 中创建上面的文本。我在网上冲浪,但不幸的是,我没有找到任何关于它的信息。

4

3 回答 3

0

一般来说,不——您也无法获得特定变量的名称或其“id”。

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

编辑:我假设,通过“变量 ID”,您的意思是“该变量引用的对象的唯一标识符”,如 Python 的id内置:

>>> x = {}
>>> y = z = {}
>>> (id(x), id(y), id(z))
(123, 567, 567)
于 2010-11-04T21:13:55.783 回答
0

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

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

aVariableName.aClassFunction

是相同的

aVariableName["aClassFunction"]

希望有帮助。

于 2010-11-04T21:20:36.197 回答
0

我不知道如何在不做大量工作解析的情况下从代码中获取变量的名称,这会变得混乱,我会为此开枪。

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

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

于 2010-11-04T21:25:03.630 回答