柯里化是一種將使用多個引數的乙個函式,轉換成一系列使用乙個引數的函式的技術
前端使用柯里化的主要是簡化**結構,提高系統的維護性,乙個方法只有乙個引數,強制來功能的單一性, 很自然的做到來功能內聚,降低耦合。柯里化的優點是降低**的重複,提高**的適應性。
function
fixedparamscurry
(fn)
}function
add(a, b, c, d)
function
curry
(fn, length)
else}}
var newadd =
curry
(add)
var result1 =
newadd(1
)(2)
(3)(
4)var result2 =
newadd(2
,2)(
2,3)
var newadd1 =
newadd(1
);var result3 =
newadd1(2
,3,4
)
乙個是陣列的扁平化,乙個是物件的扁平化。其實都是乙個降維的過程,既將多層的陣列或者物件轉化為一層。
// 陣列扁平化
function
flatten
(arr)
else
}return result
}// 使用reduce
const
flatten1
=(arr)
=> arr.
reduce
((pre, next)
=>,[
])
判斷了一次之後,不需要再去判斷第二次。例如下面的新增監聽事件的函式。
function
addevent
(dom, type, handler)
}else
}}
將其他的函式的功能組合,返回乙個新的函式,形成乙個新的功能。自右向左執行,將後面的函式執行的結果返回給前面的函式。
function
compose()
, x)}}
function
a(x)
function
b(x)
function
c(x)
var f =
compose
(a, b, c)f(
'a')
對於相同的輸入,永遠會得到相同的輸出,而且沒有任何***,不影響外部變數,也不依賴外部環境的狀態,不依賴不修改外界作用域的變數或狀態。
多使用純函式,可以降低出現bug的概率。
通過閉包,私有化乙個 cache 變數,將函式執行的結果快取到這個 cache 當中。
function
mermory
(fn)
return
function()
else
}}
OOP程式設計理念
物件導向程式設計師程式結構的一種實現方法,包括以下幾個要素 物件 object 包含一定的資料結構和狀態的實體。操作 operation 作用於物件的行為,如訪問和處理物件的狀態 封裝 excapsulation 定義物件和操作,只提供抽象的介面,並隱藏它們的具體實現 繼承 inheritance ...
虛函式表實現理念
每個包含了虛函式的類都包含乙個虛表。我們知道,當乙個類 a 繼承另乙個類 b 時,類a會繼承類b的函式的呼叫權。所以如果乙個基類包含了虛函式,那麼其繼承類也可呼叫這些虛函式,換句話說,乙個類繼承了包含虛函式的基類,那麼這個類也擁有自己的虛表。個人理解 用父類指標指向子類物件時,如果基類中有虛函式,那...
C 程式設計的幾大理念
1.編碼要規範。為什麼看別人的 總是那麼痛苦,這個問題是程式設計師永遠的痛。造成這個痛的原因就是每個人都按照自己的編碼習慣去編碼。2 要有重用思想。寫 時要有重用思想,要想到自己的 可能在以後還會用到,到時候乙個ctrl c,就過去了。3 要有 移植思想。4 要有介面和邏輯分離思想。5 要有模組化思...