偏函數用法是指建立一個調用另一個部分——參數或變量已經預置的函數——的函數的用法。函數
let toString = Object.prototype.toString;
let isString = function (obj) {
return toString.call(obj) == '[object String]';
};
let isFunction = function (obj) {
return toString.call(obj) == '[object Function]';
};
複製代碼
在JavaScript中進行類型判斷時,咱們一般會進行相似上述代碼的方法定義。這段代碼當然不復雜,只有兩個函數的定義,可是裏面存在的問題是咱們須要重複去定義一些類似的函數,若是有更多的 isXXX()
,就會出現更多的冗餘代碼。ui
爲了解決重複定義的問題,咱們引入一個新函數,這個新函數能夠如工廠同樣批量建立一些相似的函數。在下面的代碼中,咱們經過 isType()
函數預先指定 type
的值,而後返回一個新的函數:spa
let isType = function (type) {
return function (obj) {
return toString.call(obj) == '[object ' + type + ']';
};
};
let isString = isType('String');
let isFunction = isType('Function');
複製代碼
能夠看出,引入 isType()
函數後,建立 isString()
、 isFunction()
函數就變得簡單多了。這種經過指定部分參數來產生一個新的定製函數的形式就是偏函數。prototype