Domanda

Questo è il mio primo post.

Sto cercando di fare un po 'di base meta-programmazione con JavaScript, e mi chiedevo se c'è un modo per ottenere l'id di un particolare oggetto e con questo id, l'accesso al nome della variabile, o ottenere semplicemente la variabile nome di un particolare oggetto. Voglio ricreare una situazione in cui è necessario creare prima ogni singolo html in una pagina web, e aggiungere ad alcuni degli eventi tag HTML associato a una particolare classe di classe -example Persona-. per esempio: Supposed il codice successivo:

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

var aVariableName = new SomeClassFunction();

e nel codice HTML supponiamo di avere il prossimo pezzo di codice.

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

Quindi, come si può notare gli usi l'evento onclick aVariableName ho creato prima, ma perché ho innanzitutto creare il nome della variabile e quindi aggiungere il nome in codice di causa sapevo aVariableName era il nome di quell'oggetto. Quello che voglio fare o implementare è quello di creare il testo di cui sopra in formato HTML senza conoscere il nome della variabile di un oggetto specifico. Ho navigato in rete, ma, purtroppo, non ho trovato nulla.

È stato utile?

Soluzione

Non so come ottenere il nome di una variabile dal codice la sua auto senza fare un intero carico di roba di lavoro di analisi, che sarà ottenere disordinato, e mi piacerebbe sparare a qualcuno per questo.

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

Lo sai che puoi impostare gli eventi come questo in someElement.onclick = someFunction javascript in modo da non realmente bisogno di sapere il nome della variabile, se tutto quello che stai facendo è l'impostazione di un gestore di eventi.

Altri suggerimenti

In generale, non -. Non è possibile ottenere il nome di una particolare variabile o il suo "id" o

Se si vuole veramente, può essere possibile fare Bad Things con le eccezioni e le tracce dello stack per ottenere che le informazioni ... Ma non so fuori dalla parte superiore della mia testa come fare.

Modifica : Presumo che, da “ID variabile”, vuoi dire “un identificatore univoco per l'oggetto a cui fa riferimento la variabile”, come id di Python integrato:

>>> x = {}
>>> y = z = {}
>>> (id(x), id(y), id(z))
(123, 567, 567)

Io non sono sicuro al 100% che ho capito la tua domanda correttamente per quanto riguarda il meta-programmazione, ma in genere si dovrebbe associare un gestore di eventi per l'evento click dell'elemento DOM, allora è possibile esaminare le proprietà dell'elemento all'interno del handler.

Ci sono un paio di cose in JavaScript che facilitano meta-programmazione: eval ti consente di interpretare il codice arbitrario, in modo da poter costruire una stringa di codice e eval esso. I problemi di sicurezza sono numerosi. È anche possibile accedere alle proprietà di un oggetto da indice o per nome, per esempio

aVariableName.aClassFunction

è lo stesso di

aVariableName["aClassFunction"]

La speranza che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top