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

JavaScript 徧函數(shù)

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

■知識點

    徧函數(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 ('下劃線字'));

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

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