ugrás a tartalomhoz

Understanding JavaScript's Function.prototype.bind

janez · 2014. Jan. 26. (V), 15.51
A JavaScript Function.prototype.bind() használata
 
1

Hehe, kezdőként mennyit

bamegakapa · 2014. Jan. 27. (H), 13.41
Hehe, kezdőként mennyit szívtam a this-szel Javascriptben. Mondjuk akkor nem volt még bind, örülök, hogy most már van :). Jó cikk!
2

Tényleg jó, hogy van, de a

Hidvégi Gábor · 2014. Jan. 27. (H), 17.06
Tényleg jó, hogy van, de a változók hatókörét ígyis-úgyis meg kell érteni, tehát a problémát nem oldja meg, csak egy újabb eszközt ad a kezünkbe.
3

Valóban, a megértés alól az

bamegakapa · 2014. Jan. 27. (H), 17.47
Valóban, a megértés alól az eszközök nem mentenek fel. Később, amikor már értettem, nagyon szúrta a szemem a var that = this; folytonos kiirkálása, de aztán jött a bind.
4

Szubjektív

Hidvégi Gábor · 2014. Jan. 28. (K), 11.04
Nekem az a bajom a this-szel, hogy ha ránézek egy ismeretlen/olyan kódra, amivel rég foglalkoztam, első pillantásra nem mond semmit, hogy melyik objektumról van szó. Ezért hatékonyabbnak tartom hosszabb forrás esetén, ha nem var that = this;-nek nevezem ezt a változót, hanem mondjuk var kulonleges_listbox = this;-nek.
5

Én inkább osztályokat

inf3rno · 2014. Jan. 28. (K), 17.48
Én inkább osztályokat (prototípusokat) használok, és amikor egy-egy ilyen osztálynak a metódusát definiálom, akkor mindig az adott osztály példányához kötöm a this-t, függetlenül attól, hogy hány forEach, each, stb...-t használok, ahol bindelni kell.

Nekem nagyon nem tetszik az a megközelítés, amit sok helyen látok, és én is alkalmaztam régebben, hogyha valahol callback-et várunk, akkor alapból beállítunk neki egy default context-et. pl

Array.prototype.each = function (callback){
	for (var i=0, l=this.length; i<l; ++i)
		callback.call(this, this[i], i);
};
Az a baj ezzel, hogy használatkor nagyon nehezen értelmezhető, ha az array contextusában használjuk a callback-et, és nem bindeljük semmihez. Agyalni kell rajta, hogy mi a this... Helyette sokkal következetesebb mindig window-hoz global namespace-hez, stb... kötni alapból, és minden egyéb esetben külön bindelni. (Lehet, hogy csak én követtem el ezt a hibát.)
6

Mióta komolyabban foglalkozom

deejayy · 2014. Jan. 29. (Sze), 00.27
Mióta komolyabban foglalkozom JS-sel, azóta csak bindet használok ilyen esetekben, viszont nekem az elejétől fogva viszketésem van ettől a "hack"-től, számomra annyira idegen, hogy ahányszor leírom, elgondolkodom, hogy ezt most miért így kell, és miért nincs rá jobb megoldás.
7

+1, engem is sokszor zavar.

inf3rno · 2014. Jan. 29. (Sze), 01.14
+1, engem is sokszor zavar.