Autor Zpráva
Suta
Profil
ColorPicker = function() {};

ColorPicker.prototype = {

  zpracujMousedown : function () {

    this.nejakaHodnota= true;

    var that = this;

    $(document).bind("mouseup.colorPicker",function(){
    
      // jak jinak se můžu dostat ke kontextu metody?
      that.nejakaHodnota= false;
      
      $(document).unbind("mouseup.colorPicker");
    });
}


Jak se dostat ke kontextu metody, abych nemusel "držet" (a tím zabírat paměť) takto - viz výše?

Díky za radu.
Witiko
Profil
Suta:
Držením je myšlena existence proměnné that obsahující referenci na potomka s prototypem v objektu ColorPicker? Ta by neměla zabírat víc než kolik - tak 4 bajty? Takže bych se toho "zabírání paměti" tak neobával. Navíc si skutečně nemyslím, že by v případě jQuery existoval elegantnější způsob.
Nezapomeň, že předčasné optimalizace jsou kořenem všeho zla. Člověk si postupem času s přibývající znalostí jazyka osvojí určité generické techniky, jak psát čitelný, udržovatelný a funkční kód. Naopak přehnané optimalizace na úkor čitelnosti jsou často na škodu. Optimalizoval bych, jen když je to potřeba.
Suta
Profil
Witiko:
Ta by neměla zabírat víc než kolik - tak 4 bajty?
Kolik byte (bajtů..) přesně nevím. Tady jde ale spíš o to, že podobná operace může na stránce během určité doby (déletrvajícího používání aplikace) nastat třeba 1000x a v takovém případě nevíš, jak se který prohlížeč bude chovat. Člověk stále naráží na rady, jak uvolňovat paměť kvůli nesourodosti prohlížečů a jak předcházet případům jako je výše, proto moje otázka.

Jinak souhlasím často s přehnanou obavou a snahou za každou cenu všechno optimalizovat, málokdy to v praxi najde svoje naplnění.
Witiko
Profil
Suta:
jQuery metody co já vím samy spouštějí callback metody pod kontextem daného elementu. Tento kontext je by design neměnný, tzn.:
$("body").click(function() {
  alert(this === document.body); // true
});
Při použití vlastní sady metod místo frameworku by bylo samozřejmě možné předat kontext jako argument, což ale nic nemění na tom, že reference bude někde uložená, takže se vlastně nejedná o řešení. Navíc prakticky libovolná textová literála zabere víc místa než jedna proměnná s referencí a potřeboval bys tisíce instancí ColorPickeru, abys došel k leaku, který by se rovnal velikosti jednoho 4x4 png obrázku. Nejedná se proto o problém, ale o standardní přístup k předání kontextu.
Suta
Profil
Witiko:
Snad to tak je, díky.

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