2

これは私の最初の投稿です。

私はjavascriptでいくつかの基本的なメタプログラミングをしようとしています.特定のオブジェクトのIDを取得し、そのIDを使用して変数名にアクセスする方法があるかどうか、または単に変数名を取得する方法があるかどうか疑問に思っていました.特定のオブジェクト。最初に Web ページ内のすべての 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 で上記のテキストを作成することです。ネットで調べてみましたが、残念ながら何も見つかりませんでした。

4

3 に答える 3

0

メタプログラミングに関してあなたの質問を正しく理解しているかどうかは 100% 確信が持てませんが、通常、DOM 要素のクリック イベントにイベント ハンドラーをアタッチすると、ハンドラー内の要素のプロパティを調べることができます。

JavaScript には、メタプログラミングを容易にするいくつかの機能があります 。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 に答える
0

一般に、いいえ — 特定の変数の名前やその「id」も取得できません。

本当にやりたいのであれば、例外とスタック トレースを使用して Bad Things を実行し、その情報を取得することも可能かもしれません。

編集:「変数ID」とは、Pythonのid組み込みのように、「その変数によって参照されるオブジェクトの一意の識別子」を意味すると思います。

>>> x = {}
>>> y = z = {}
>>> (イド(x)、イド(y)、イド(z))
(123、567、567)
于 2010-11-04T21:13:55.783 に答える