Binding összefüggésben (e) egy JavaScript függvény és részleges funkció alkalmazása

Tekintsünk egy egyszerű objektum, amely az eljárás az x és f tulajdon. amely kijelzi, hogy a konzol érték this.x

Amint azt egy korábbi bejegyzésben. ha a szám megjelenik object.f () hívás a konzol 3. Tegyük fel, hogy meg kell, hogy ezt a számot 1 másodperccel.

Minden alkalommal, ezúttal egy wrapper funkció - kényelmetlen. Szüksége van egy módja annak, hogy kötődnek keretében funkció, hogy ez a belső object.f funkciók mindig említett tárgy

1. jQuery.proxy

Ha meg kell határoznunk egy párszor ugyanazt visszahívás helyett megkettőzése

Jobb, hogy az eredmény a $ .proxy egy külön változót

Most viszont a figyelmet arra a tényre, hogy már kétszer mutatott objektum a $ .proxy (az első alkalommal, amikor egy objektum módszer - object.f második -. Átadhatóság kontextus - objektum). Lehet, hogy ez lehetséges, hogy elkerüljék a párhuzamos? A válasz - igen. Ilyen esetekre $ .proxy adtunk alternatív lehetőségét átviteli paraméterek - az első paramétert kell egy tárgyat, és a második - a neve az ő módszerét. például:

Vegye figyelembe, hogy az eljárás neve vezetjük karakterlánc.

2. Function.prototype.bind

böngésző kompatibilitás

Firefox (Gecko): 4,0 (2)
Chrome: 7
Internet Explorer 9
Opera: 11.60
Safari 5.1.4

Emuláció Function.prototype.bind Mozilla Developer Network

Function.prototype.bind két célja van - statikus összefüggésben a kötési funkció és részleges funkció alkalmazása.
Valójában kötődnek létrehoz egy új funkció, amely felhívja funkcionális összefüggésben összefüggésben. Ha megadja az érveket arg1, arg2 ... - akkor hozzá kell adni minden egyes hívás új funkció, ami a stand előtt, akik kapnak hívásakor az új funkciót.

2.1. kötési összefüggésben

Használja kötődnek a kötési helyzet nagyon egyszerű, csak annyi, hogy egy példát:

Így egy példa a beadás lehet írva a következő formában:

2.2. Részleges alkalmazás funkciói

Az egyszerűség kedvéért a példában úgy kötődik közvetlenül a részlegesen használható alkalmazás funkciók

Mint látható a példa - a részleges alkalmazás funkciói egyszerű - létrehozása egy új funkciót egy csökkentett számú érvek, mivel a „rögzítési” az első argumentum a bind funkciót.
Ebben az egy lenne befejezni a cikket, de ... Funkciók kapott a bind módszernek néhány sajátossága a viselkedését

2.3. Jellemzők kötődnek

Mielőtt érti - én kiírja a főbb jellemzői a leköti szabvány szerint.

2.3.1. belső tulajdonság

Do tárgyak funkció által létrehozott Function.prototype.bind, nincs prototípus tulajdon vagy belső tulajdonságait [[kód]], [[FormalParameters]] és [[Scope]].

Ez a korlátozás megkülönbözteti a beépített végrehajtása manuálisan kötődnek bizonyos technikák (például, egy változata MDN)

2.3.2. hívni, és alkalmazni

Viselkedés hívás és módszerek alkalmazása eltér a magatartási normák funkciók, nevezetesen:

A kód azt mutatja, hogy a thisValue nem használják sehol máshol. Így cserélje összefüggésben hívja a funkciók alkalmazásával nyert Function.prototype.bind hívás és alkalmazza - ez lehetetlen!

2.3.3. A kivitelező,

Ebben a kivitelező utal az új (teremtett) objektumot. Más szóval, a meghatározott kontextust a bind egyszerűen figyelmen kívül hagyja. A kivitelező kéri a rendes [[Hívás]] eredeti funkcióját.
Fontos! Ha a tervező nem tér vissza ezt. A visszatérési érték általában ismeretlen!

elemzésekor például

következtetés

Ebben a bejegyzésben megpróbáltam leírni a fő módszerei árukapcsolás keretében funkciók is ismertet néhány jellemzője a Function.prototype.bind, miközben igyekeztem tartani csak a fontos rész (véleményem szerint).
Ha azt veszi észre a hibákat / pontatlanságokat vagy szeretnék tisztázni valamit / add - írj a gyógyszerek korrigálja