位置:首頁 > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 徧函數(shù)

提問人:劉團圓發(fā)布時間:2020-11-25

■知識點

    徧函數(shù)是函數(shù)柯里化運算的一種特定應用場景。它是把一個函數(shù)的某些參數(shù)先固化,也就是設置默認值,返回一個新的函數(shù),在新函數(shù)中繼續(xù)接收剩余參數(shù),這樣調用這個新函數(shù)會更簡單。

■實例設計

【示例1】下面是一個類型檢測函數(shù),共接收兩個參數(shù):第1個參數(shù)表示類型字符串,第2個參數(shù)表示檢測的數(shù)據(jù)。

var isType=function(type, obj){

    return Object.prototype.toString.call(obj)=='[object ' + type+ ']';

}

該函數(shù)包含兩個設置參數(shù),使用時比較煩瑣。一般按如下方式進行設計:

var isString=function(obj){

    return Object.prototype.toString.call(obj)=='[object String]';

};

var isFunction=function(obj){

    return Object.prototype.toString.call(obj)=='[object Function]';

};

函數(shù)接收的參數(shù)單一,檢測的功能也單一和明確,這樣更方便在表達式運算中有針對性的調用。下面對isType()函數(shù)進行扁平化設計,代碼如下:

var isType=function (type) { //徧函數(shù)

    return function(obj){

        return Object.prototype?toString.call(obj)==’ [object ' + type+ ']';

    }

}

然后根據(jù)徧函數(shù)獲取不同類型檢測函數(shù):

var isString = isType("String"); //專一功能檢測函數(shù),檢測字符串

var isFunction = isType("Function"); //專一功能檢測函數(shù),檢測函數(shù)

應用代碼:

console.log( isString("12"));         //true

console.log( isFunction(function(){})); //true

console.log( isFunction( {} ));         //false

【示例2】下面的示例設計一個wmp()徧函數(shù),該函數(shù)的主要功能是產(chǎn)生一個HTML包裹函數(shù),即樣式標簽。

function wrap(tag) {

    var stag = '<' + tag + '>';

    var etag = '</' + tag.replace(/s.*/, '') + '>';

    return function(x) {

        return stag + x + etag;

    }

}

var b = wrap('b'); 

document.write (b ('粗體字'));

var i = wrap('i'); 

document.write (i ('斜體字')); 

var u = wrap(1u1); 

document.write (u ('下劃線字'));

繼續(xù)查找其他問題的答案?

相關視頻回答
回復(0)
返回頂部