Autor Zpráva
Hanz
Profil
Jde nějak zjistit název konstruktoru z třídy, které je to konstruktor?
No odhaduju, že to moc lidí nepochopilo, tak ukázka:
function Pokus(){
alert(XXX);
}

var nezev = new Pokus();

Já potřebuju něco co mi za to XXX dosadí "nazev". Například kdyby to bylo var cokolada = new Pokus();, tak mi o vyhodí "cokolada".
Jde to?
ah01
Profil
Jde to?
Dost špatně. Přijde mi to jako dost divný požadavek. K čemu by to mělo být dobré?
Hanz
Profil
function Ob(element){
this.el = element;
addEvent(this.el, 'mousedown', this.drag);
}


Ob.prototype.drag = function(e){
// tohle nebude fungovat:
this.el.style.left = e.clientX+'px';
// tohle fungovat bude:
objekt.el.style.lef = e.clientX+'px';
}

var objekt = new Ob($('box'));


$ -> je funkce pro getElementById
addEvent -> funkce pro přidání události

Problém je v tom, že já nebudu vědět jak se bude ten konstruktor jmenovat. Vím, že by ten název šel posílat jako parametr, ale to vidím jako krajní řešení.
ah01
Profil
aha
1) nejedná se tedy o název konstruktoru, ale instanci objektu
2) jdeš na to ze špatné strany. Lepší je dostat referenci na element do obsluhy té události. Mrkni na http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=48604&foru m=8&page=-1 , to je stejný problém, jen trochu jinak popsaný.
Hanz
Profil
ah01
No to mi sice pomohlo v tom, že se můžu odkázat na tu proměnnou, ale zase jsem přišel o událost. V této funkci z toho scriptu výše:
Ob.prototype.drag = function(e){
}

se nepředá parametr "e" z kterého beru clientX
Co s tím?
ah01
Profil
třeba (nevím jak to máš konkrétně napsané):
var that = this;

addEvent(this.el, 'mousedown', function(e){that.drag.call(that,e);});
Hanz
Profil
ah01
Já jsem fakt blbec! Moc dík to mě nenapadlo...

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0