JavaScript 徧函數(shù)
■知識點
徧函數(shù)是函數(shù)柯里化運算的一種特定應(yīng)用場景。它是把一個函數(shù)的某些參數(shù)先固化,也就是設(shè)置默認(rèn)值,返回一個新的函數(shù),在新函數(shù)中繼續(xù)接收剩余參數(shù),這樣調(diào)用這個新函數(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è)置參數(shù),使用時比較煩瑣。一般按如下方式進(jìn)行設(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ù)單一,檢測的功能也單一和明確,這樣更方便在表達(dá)式運算中有針對性的調(diào)用。下面對isType()函數(shù)進(jìn)行扁平化設(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ù)
應(yīng)用代碼:
console.log( isString("12")); //true
console.log( isFunction(function(){})); //true
console.log( isFunction( {} )); //false
【示例2】下面的示例設(shè)計一個wmp()徧函數(shù),該函數(shù)的主要功能是產(chǎn)生一個HTML包裹函數(shù),即樣式標(biāo)簽。
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 ('下劃線字'));
點擊加載更多評論>>