let fn = (a, b, c) => {
console.log(a, b, c)
}
fn1(0, 0, 0) // output: 0 0 0
Ich möchte, dass der zweite Parameter von fn bei jedem Aufruf immer um 2 erhöht wird
Das ist
fn(0, 0, 0) // output: 0 2 0
fn(1, 1, 1) // output: 1 3 1
Derzeit fällt mir nur eine sehr hässliche Art ein, Hijack zu schreiben:
fn = (_ => {
const innerFn = fn
const newFn = (a, b, c) => {
innerFn(a, b + 2, c)
}
Object.assign(newFn, innerFn)
return newFn
})()
Gibt es eine bessere Verpackungsmethode?
方法是没错,不过我总觉得你写的有点别扭……我觉得直接一点比较好……
呃呃呃。。
其实无非就是分别给参数加上 0, 2, 0
也就是说从函数 fn 生成另外一个
偏函数
fnOffset把 [0, 2, 0] 这三个参数 分别加到 fn(a, b, c) 上的 a b c 上
更广义的说:
把
[ .... ]
这n
个参数 分别加到fn()
的arguments
的对应位置上用
fn020
做变量名 应该更优雅把 = =你描述的东西有点像ES6的Proxy,但是这个是无法polyfill的,可能不太适合在前端用。