ECMAScript 所提供的多半以 prototype 的 Method 形式,可藉由本文手法將 Method 轉成 Function 使用。
Version
macOS Catalina 10.15.2
VS Code 1.41.1
Quokka 1.0.274
Ramda 0.26.1
call.bind()
let _fill = Array.prototype.fill
let fill = Function.prototype.call.bind(_fill)
fill([1, 2, 3], 0, 1, 2) // ?
Function.prototype.call() 可將 argument 傳給 function 執行,但此時 this 指向 function 為 undefined,需透過 bind() 將 Array.prototype.slice 傳進產生新 function。

let fill = (_ => {}).call.bind([].fill)
fill([1, 2, 3], 0, 1, 2) // ?
Function.prototype 亦可使用 (_ => {}) arrow function 取代,而 Array.prototype 則以 [] 取代。

Ramda
import { invoker } from 'ramda'
let data = [1, 2, 3]
let fill = invoker(3)('fill')
fill(0)(1)(2)(data) // ?
Ramda 亦提供 invoker() 將 method 轉成 function,並將 data 改成最後一個 argument。

Conclusion
Function.prototype.call.bind()雖然能將 method 轉成 function,唯 data 都在第一個 argument,不方便 function composition,因此實務上建議使用invoker()
Reference
MDN, Function.prototype.call()
MDN, Function.prototype.bind()
Ramda, invoker