HTML

Perl, jQuery és minden ami webfejlesztés MAGYARUL

Sziasztok! Ezen a blogon a perl nyelvről, a perlben íródott Catalyst MVC keretrendszerről és jQuery-ről lesz szó, tehát mindenről ami ma egy webfejlesztőt érdekelhet ( tutoriálok, újdonságok a nagyvilágból ).

Friss topikok

Linkblog

2011.03.27. 00:35 oroce

Function.bind

Címkék: javascript ecmascript5

Már régóta nem volt bejegyzés, mostanság feltorlódtak a tennivalók, de remélem lassan több időm jut a blogra.

Nos, ma nézzük meg a bind-ot, ami az új EcmaScript 5-be került bele.
Mire is jó? Hát röviden hozzá tudunk rendelni egy adott függvényhez paramétereket.
 
function doSg(){
console.log( this,arguments ); //listázzuk a bejövő paramétereket
}

Gyorsan kreáltunk egy függvényt, most nézzük meg bind használatát, a jó öreg setTimeout függvény segítségével.

setTimeout("doSg(true, 'almafa' )",1000)

Ekkor a console-ra a következő kerül kiírásra: DOMWindow, [true, "almafa"]
Mellesleg ha így hívnád a setTimeoutot azt felejtsd el, ugyanis a doSg függvény az (evil) evallal kerül lefuttatásra. 

setTimeout( function(){
doSg( true, 'almafa' ); }, 1000);

Így már egy kicsit másabb és ugyanazt azt eredményt érjük el, a consolera szintén a következő került: DOMWindow, [true, "almafa"]

Most állítsuk be a doSg függvény meghívásakor a this értéket:

setTimeout(function(){
doSg.call( this.document, true, "almafa");},1000);

Nos most a Document, [ true, "almafa" ]  került kiírása, ez így már kezd szexi lenni:)
Már csak egy baj van, ugye minden alkalommal ha a doSg függvényhez rendelni akarunk, valamilyen paramétert akkor létre kell hozni egy anonymus függvényt, amit nem annyira szeretünk, ugyanis ha paraméter nélkül hívjuk a doSg-ot akkor ilyen egyszerűen is megtehetjük:

setTimeout( doSg, 1000);

Ekkor a kimenet a DOMWindow, [] lesz.

Ennek a probléma megoldására vezették be bindot, anélkül tudunk hozzárendelni függvényhez paramétereket, hogy az azonnal lefutna, vagy anonymus functionba kellene írni. Nézzük, hogy nézne ki a setTimeoutunk:

setTimeout( doSg.bind( this.document, true, "almafa" ), 1000);

Woow, ez már így igen szép, és a kimenete is a következő: Document, [ true, "almafa" ].

Szvsz engem teljesen lenyűgöz, ugyanis borzalmasan utálok folyamatosan anonymus függvényeket írogatni.

FF, és a Chrome már biztosan támogatja, IE-ről sajna még nincs infóm, de szerencsére az MDC-ben van egy egyszerű workaround a Function.bind megvalósítására illetve találhattok további példákat a használatára.

Szólj hozzá!

A bejegyzés trackback címe:

https://pquery.blog.hu/api/trackback/id/tr72774573

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása