偏函數的用法

偏函數用法是指建立一個調用另一個部分——參數或變量已經預置的函數——的函數的用法。函數

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

相關文章
相關標籤/搜索