Programowanie funkcyjne w JavaScript i biblioteka underscore.js

underscorejs

Poziom średnio-zaawansowany

Programowanie funkcyjne (lub programowanie funkcjonalne) to metodyka programowania będąca odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji.

Korzysta na tym także biblioteka underscore.js, która również wspiera programowanie funkcyjne w JavaScript.

Biblioteka underscore.js i programowanie funkcyjne

Underscore.js jest biblioteką JavaScript, oferującą wiele ułatwień, które oferuje Prototype.js (czy też np. język Ruby!), jednak nie przeciąża natywnych obiektów JS.

Na bibliotece tej bazuje inna popularna biblioteka – Backbone.js. Autor obu bibliotek stworzył także CoffeeScript.

Przykłady użycia

_.map([1, 2, 3], function(num){ return num * 3; });
// => [3, 6, 9]

W tak prosty sposób następuje mapowanie po wszystkich wartościach z listy podanej jako argument.

_.times(4, function() { console.log("JS") });

Ten przykład wypisze w konsoli cztery razy napis „JS”.

Underscore.js zawiera ponad 100 użytecznych funkcji, takich jak each, map, filter, find, invoke.

Do tego są funkcje narzędziowe.

Przykład – noConflict:

var underscore = _.noConflict();
underscore.times(4, function() { console.log("JS") });

W bibliotece tej znajdziemy całą gamę możliwości. Nie zabraknie oczywiście wsparcia dla takich mechanizmów jak refleksja.

Przykład:

_.functions(_);
// => ["all", "any", "bind", "bindAll", "clone", "compact", ...

Funkcja functions_.functions(object), posiadająca także alias „methods”, zwraca posortowaną listę nazw wszystkich metod w obiekcie.

Nie zabraknie takich funkcji jak escape:

_.escape('Curly, Larry & Moe');
// => "Curly, Larry & Moe"

_.unescape('Curly, Larry & Moe');
// => "Curly, Larry & Moe"

Ekstrakcja wartości z obiektu? Pewnie:

_([1, 2, 3]).value();
// => [1, 2, 3]

I wiele innych możliwości. Wystarczy spędzić dłuższą chwilę nad dokumentacją. Underscore.js to rewelacyjna biblioteka. Nie tylko pod względem możliwości jakie oferuje, ale też sposobu w jaki je oferuje.

Zasoby

– funkcje anonimowe i domknięcia

http://javascript-html5-tutorial.pl/geek-lambda-funkcje-anonimowe-domkniecia-w-javascript.html

– functional programming

http://eloquentjavascript.net/1st_edition/chapter6.html

– strona projektu underscore.js

http://underscorejs.org/

Polecam także „Functional JavaScript” – O’Reilly. Ta książka pozwala znakomicie zagłębić się w temat.

Do pobrania strona testowa (wybrane funkcje underscore):

http://directcode.eu/samples/underscore.zip


Podsumowanie

Programowanie funkcyjne w JavaScript jest interesującym zagadnieniem. Pokazuje to m.in. biblioteka underscore.js, która jest bardzo zgrabnym narzędziem.

thankyou.js

Programista WWW i aplikacji mobilnych z wieloletnim doświadczeniem, początkujący bloger. Pasjonat programowania, nowych technologii, e-commerce, a także sportu i motoryzacji.

Twitter LinkedIn Google+ Skype Xing 

Podaj dalej: Share on Facebook0Tweet about this on TwitterShare on Google+1Share on LinkedIn1Share on Tumblr0Digg thisEmail this to someonePin on Pinterest1
Możesz skomentować leave a response, lub podać trackback z własnej strony.