js實(shí)現(xiàn)類(lèi)似于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
沒(méi)錯(cuò)!那要是add(1)(2)(3)(4) 這樣4個(gè)調(diào)用呢,那這個(gè)肯定不適用了。
這種就是類(lèi)似于執(zhí)行一個(gè)函數(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這個(gè)函數(shù),這樣就獲取不到計(jì)算的結(jié)果了,我們需要的結(jié)果是一個(gè)計(jì)算的數(shù)字那么怎么辦呢,首先要知道JavaScript中,打印和相加計(jì)算,會(huì)分別調(diào)用toString或valueOf函數(shù),所以我們重寫(xiě)tmp的toString和valueOf方法,返回sum的值;
以上就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
相關(guān)文章
js對(duì)字符串進(jìn)行編碼的方法總結(jié)(推薦)
下面小編就為大家?guī)?lái)一篇js對(duì)字符串進(jìn)行編碼的方法總結(jié)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11改版了網(wǎng)上的一個(gè)js操作userdata
改版了網(wǎng)上的一個(gè)js操作userdata,并根據(jù)其它網(wǎng)友的文章結(jié)合了下。希望對(duì)需要的朋友有所幫助。2007-04-04js自定義方法通過(guò)隱藏iframe實(shí)現(xiàn)文件下載
通過(guò)隱藏iframe實(shí)現(xiàn)文件下載,不可思議吧,但確實(shí)是可以實(shí)現(xiàn)的,不懂的看下代碼,或許可以幫助到你,而且此功能是用js實(shí)現(xiàn)的,感興趣的你可不要錯(cuò)過(guò)了哈2013-02-02Javascript removeChild()刪除節(jié)點(diǎn)及刪除子節(jié)點(diǎn)的方法
這篇文章主要介紹了Javascript removeChild()刪除節(jié)點(diǎn)及刪除子節(jié)點(diǎn)的方法的相關(guān)資料,需要的朋友可以參考下2015-12-12計(jì)算世界完全對(duì)稱(chēng)日的js代碼,粗糙版
世界完全對(duì)稱(chēng)日,指的是公歷紀(jì)年日期中數(shù)字左右完全對(duì)稱(chēng)的日期,這一天朋友們可以互送祝福同時(shí)讓大家感嘆時(shí)間的寶貴。2011-11-11js 頁(yè)面刷新location.reload和location.replace的區(qū)別小結(jié)
在實(shí)際應(yīng)用的時(shí)候,重新刷新頁(yè)面的時(shí)候,我們通常使用: location.reload() 或者是 history.go(0) 來(lái)做。下面有一些相關(guān)的內(nèi)容,大家看完了就會(huì)有更多的收獲。2009-12-12利用JScript中運(yùn)算符"||"和"&&"的特殊特性實(shí)現(xiàn)代碼精
利用JScript中運(yùn)算符"||"和"&&"的特殊特性實(shí)現(xiàn)代碼精簡(jiǎn)...2007-03-03