11548 sujets

JavaScript, DOM et API Web HTML5

Si je créé un object avec par exemple le code suivant :


var myObject = new Object();


Comment je fais pour savoir dans l'object quel est le nom de la variable qui lui est associé ?

Comment faire pour qu'une méthode de myObject sache que la variable s'appelle myObject ?

C'est utile car souvent cet object a besoin d'être appelé lors d'évènements et il me faut bien son nom.

Actuellement je passe en paramètre de l'object le nom que j'utilise :


var myObject = new Object('myObject');


Y a t'il un moyen d'éviter ça ?
Modifié par Grumelo (25 Jun 2007 - 15:10)
Modérateur
Salut,

Je ne comprend pas bien ta question car le nom de la variable, tu l'as. Smiley rolleyes

S'il s'agit d'ajouter un événement, tu peux faire ainsi :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />

		<title>Exemple</title>
		<script type="text/javascript"><!--

function connect(oElem, sEvType, fn, bCapture)
{
	return document.addEventListener ?
		oElem.addEventListener(sEvType, fn, bCapture):
		oElem.attachEvent ?
			oElem.attachEvent('on' + sEvType, fn):
			false;
}

var oO = new Object;
oO.init = function()
{
	alert('coucou');
};

connect(window, 'load', oO.init, false);

		//--></script>
	</head>
	<body>
	</body>
</html>
donc quel est le problème au juste ? Smiley sweatdrop

Je ne vois pas un cas où ça pose problème en fait.
Modifié par koala64 (25 Jun 2007 - 13:48)
Non, c'est pas possible de savoir depuis l'objet que ta variable s'appelle myobject.

A moins que myobject s'agisse d'une variable globale. Auquel cas la fonction getVarName du code suivant devrait permettre de récupérer son nom (écrit en live, non testé) :

function MaClasse () {
this.getVarName = function () {
for (var i in window) {
if (window[ i ]==this) return i;
}
return null;
};
// Autres membres
}


EDIT : bbcode à la noix... je me suis encore fait avoir par l'index de tableau i.
Modifié par QuentinC (25 Jun 2007 - 14:01)
Ok merci c'est bien ce que je craignais.

Pour répondre à QuentinC, c'est l'object lui même qui doit connaître son propre nom en interne.
Modifié par Grumelo (25 Jun 2007 - 15:09)
a écrit :

Pour répondre à QuentinC, c'est l'object lui même qui doit connaître son propre nom en interne.

Ah.... alors mon exemple est complètement HS.
Désolé !
pourquoi ce n'est pas possible:

var monObjet0 = new MyObject();
var monObjet1 = monObject0;

que voudrais-tu que te reponde monObjet1.getName() ?
monObjet0 ou monObjet1

les nom de variable ne sont que des "pointeurs" vers une memoire commune faite par "new"

ta methode est donc la bonne, meme si je ne suis pas sûr de son intérêt...