Underscore.js Practice

bind

function をobjectに束縛する。

(function() {
	var func = function(greeting){ return greeting + this.title };
	func = _.bind(func, { title: 'アンダースコア' }, 'titleは');
	console.log(func());
})();

bindAll

イベントハンドラとして使う予定の関数を、オブジェクトに束縛する

partial

引数の部分適用を行う。関数をオブジェクトとして受け渡す時に便利。

(function() {
	var add = function(a, b) { return a + b; };
	var already_added_25 = _.partial(add, 25);
	console.log(already_added_25(20));
})();

memoize

関数をキャッシュしてメモ化。計算結果を高速化する。

delay

_.delay(function, wait, [*arguments])

setTimeoutのようなもの。wait後にfunctionを呼び出す。

defer

_.defer(function, [*arguments])

$.Defferedのように、現在のコールスタックが終了してから呼び出す。

throttle

_.throttle(function, wait, [options])

連続してfunctionを発動させる場合、一回目が発動してからwait間次の発動がcueされる。

debounce

_.debounce(function, wait, [immediate])

[immediate] == trueの場合、functionが発動してからwait間はトリガーを引いても発動しない。

※thorottleとdebounceのgood example.

once

_.once(function)

関数のコールを一度だけに制限する。

after

_.after(count, function)

関数をcount回コールされた時に発動させる。非同期応答に役立つ。

wrap

_.wrap(function, wrapper)

wrapper にfunctionをラップさせる。functionは、wrapperの中で動作する。

compose

_.compose(*functions)

文字通り、関数の合成を行う。