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

JavaScript 徧函數(shù)

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-25

■知識(shí)點(diǎn)

    徧函數(shù)是函數(shù)柯里化運(yùn)算的一種特定應(yīng)用場(chǎng)景。它是把一個(gè)函數(shù)的某些參數(shù)先固化,也就是設(shè)置默認(rèn)值,返回一個(gè)新的函數(shù),在新函數(shù)中繼續(xù)接收剩余參數(shù),這樣調(diào)用這個(gè)新函數(shù)會(huì)更簡(jiǎn)單。

■實(shí)例設(shè)計(jì)

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

var isType=function(type, obj){

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

}

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

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ù)單一,檢測(cè)的功能也單一和明確,這樣更方便在表達(dá)式運(yùn)算中有針對(duì)性的調(diào)用。下面對(duì)isType()函數(shù)進(jìn)行扁平化設(shè)計(jì),代碼如下:

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

    return function(obj){

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

    }

}

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

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

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

應(yīng)用代碼:

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

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

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

【示例2】下面的示例設(shè)計(jì)一個(gè)wmp()徧函數(shù),該函數(shù)的主要功能是產(chǎn)生一個(gè)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 ('下劃線字'));

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

相關(guān)視頻回答
回復(fù)(0)
返回頂部