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
沒(méi)錯(cuò)!那要是add(1)(2)(3)(4) 這樣4個(gè)調(diào)用呢,那這個(gè)肯定不適用了。
這種就是類似于執(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利用transform實(shí)現(xiàn)banner的無(wú)限滾動(dòng)示例代碼
這篇文章主要介紹了原生JS利用transform實(shí)現(xiàn)banner的無(wú)限滾動(dòng)示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
js判斷ie版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼
本篇文章主要是對(duì)js判斷ie版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03
使用JavaScript輕松實(shí)現(xiàn)拖拽功能
這篇文章主要介紹了使用JavaScript輕松實(shí)現(xiàn)拖拽功能,讓你的網(wǎng)頁(yè)動(dòng)起來(lái),文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06
詳解CocosCreator項(xiàng)目結(jié)構(gòu)機(jī)制
這篇文章主要介紹了詳解CocosCreator項(xiàng)目結(jié)構(gòu)機(jī)制,只有了解這些機(jī)制后,才能更好的進(jìn)行項(xiàng)目開(kāi)發(fā),避免潛在錯(cuò)誤,并且快速的除錯(cuò)2021-04-04
javascript replace()用法詳解附實(shí)例代碼
在javascript中,String的函數(shù)replace()簡(jiǎn)直太讓人喜愛(ài)了。它靈活而強(qiáng)大的字符替換處理能力,讓我不禁想向大家介紹它。2008-10-10
Three.js基礎(chǔ)學(xué)習(xí)之場(chǎng)景對(duì)象
這篇文章主要給大家介紹了Three.js基礎(chǔ)學(xué)習(xí)之場(chǎng)景對(duì)象的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用three.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。2017-09-09
JS實(shí)現(xiàn)漂亮的時(shí)間選擇框效果
這篇文章主要介紹了JS實(shí)現(xiàn)漂亮的時(shí)間選擇框效果,結(jié)合實(shí)例形式分析了javascript時(shí)間選擇框插件的實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2016-08-08

