let fn = (a, b, c) => {
console.log(a, b, c)
}
fn1(0, 0, 0) // output: 0 0 0
想要 fn 每次呼叫的時候第二個參數總是加 2
即
fn(0, 0, 0) // output: 0 2 0
fn(1, 1, 1) // output: 1 3 1
目前只找到一個很醜的寫法去 hijack:
fn = (_ => {
const innerFn = fn
const newFn = (a, b, c) => {
innerFn(a, b + 2, c)
}
Object.assign(newFn, innerFn)
return newFn
})()
有沒有更好一點的包裝方法?
方法是沒錯,不過我總覺得你寫的有點彆扭……我覺得直接一點比較好……
呃呃呃。 。
其實無非就是分別給參數加上 0, 2, 0
也就是說從函數 fn 產生另外一個
偏函数
fnOffset把 [0, 2, 0] 這三個參數 分別加到 fn(a, b, c) 上的 a b c 上
更廣義的說:
把
[ .... ]
这n
个参数 分别加到fn()
的arguments
的對應位置上用
fn020
做變數名稱 應該更優雅把 = =你描述的東西有點像ES6的Proxy,但這個是無法polyfill的,可能不太適合前端用。