js實(shí)現(xiàn)類似于add(1)(2)(3)調(diào)用方式的方法
var add = function(a){
return function(b){
return function(c){
return a+b+c;
};
};
};
add(1)(2)(3); //6
沒錯!那要是add(1)(2)(3)(4) 這樣4個調(diào)用呢,那這個肯定不適用了。
這種就是類似于執(zhí)行一個函數(shù)返回函數(shù)自身值:
function add(x) {
var sum = x;
var tmp = function (y) {
sum = sum + y;
return tmp;
};
tmp.toString = function () {
return sum;
};
return tmp;
}
console.log(add(1)(2)(3)); //6
console.log(add(1)(2)(3)(4)); //10
但是在計(jì)算完成后還是返回了tmp這個函數(shù),這樣就獲取不到計(jì)算的結(jié)果了,我們需要的結(jié)果是一個計(jì)算的數(shù)字那么怎么辦呢,首先要知道JavaScript中,打印和相加計(jì)算,會分別調(diào)用toString或valueOf函數(shù),所以我們重寫tmp的toString和valueOf方法,返回sum的值;
以上就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
js自定義方法通過隱藏iframe實(shí)現(xiàn)文件下載
通過隱藏iframe實(shí)現(xiàn)文件下載,不可思議吧,但確實(shí)是可以實(shí)現(xiàn)的,不懂的看下代碼,或許可以幫助到你,而且此功能是用js實(shí)現(xiàn)的,感興趣的你可不要錯過了哈2013-02-02Javascript removeChild()刪除節(jié)點(diǎn)及刪除子節(jié)點(diǎn)的方法
這篇文章主要介紹了Javascript removeChild()刪除節(jié)點(diǎn)及刪除子節(jié)點(diǎn)的方法的相關(guān)資料,需要的朋友可以參考下2015-12-12js 頁面刷新location.reload和location.replace的區(qū)別小結(jié)
在實(shí)際應(yīng)用的時候,重新刷新頁面的時候,我們通常使用: location.reload() 或者是 history.go(0) 來做。下面有一些相關(guān)的內(nèi)容,大家看完了就會有更多的收獲。2009-12-12利用JScript中運(yùn)算符"||"和"&&"的特殊特性實(shí)現(xiàn)代碼精
利用JScript中運(yùn)算符"||"和"&&"的特殊特性實(shí)現(xiàn)代碼精簡...2007-03-03