(原文:http://blog.think-async.com/2010/04/bind-illustrated.html)html
本文解釋了bind
是如何工做的。爲了清晰,我對圖中的語法做了一些簡化(例如,省略函數調用操做符的參數類型),而且簡化了 bind
的實現.async
1. bind
能夠用來將用戶提供的須要一個參數的函數轉換成不須要參數的函數對象。綁定的值(在這個例子中是123)存儲在函數對象內而且會被自動傳遞給用戶指定的函數:函數
2. 參數綁定也能夠用於將類成員函數轉換成零參數的函數對象。猿類們都知道,非靜態成員函數須要一個隱式的 this
參數。這意味着須要綁定一個合適的類實例指針到這個函數對象:this
3. 相應地,隱式的 this
指針也能夠顯式地傳遞給須要一個參數的函數對象:spa
4. 函數對象常常同時使用提早綁定的參數和調用時才提供的參數。這個能夠用成員函數來實現:3d
5. 固然也能夠使用非成員函數:指針
6. 有些時候函數對象被調用時會提供多餘的參數,而這些參數是目標函數不須要的。bind
會自動忽略這些多餘的參數:code
7. 這些多餘的參數不須要必定在函數對象簽名的最後:htm
8. 最後, bind
還容許從新組織函數對象的參數順序:對象