Ramda 使用 setDate 函数失败

Ramda fails with setDate function

我正在尝试通过 Ramda and I'm stuck with this. Here is the JS Bin: http://jsbin.com/kozeka/

学习函数 javascript

这是代码:

const date = new Date()
const addDays = R.add(date.getDate())
const getDate = R.compose(date.setDate, addDays)

console.log(date.setDate(date.getDate() + 6)) //Works
console.log(date.setDate(R.add(date.getDate(), 6))) // Works
console.log(date.setDate(addDays(6))) //Works
console.log(getDate(6)) //Doesn't Work

但是我遇到了这个错误。我做错了什么?

"TypeError: Method Date.prototype.setDate called on incompatible receiver undefined
    at setDate (<anonymous>)
    at http://cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.min.js:6:3064
    at http://cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.min.js:6:182
    at kozeka.js:10:38"

问题是 setDate 在作为函数传递时丢失绑定 date 实例。

这可以通过在将方法传递给 compose 时将方法显式绑定到 date 实例来解决:

const getDate = R.compose(date.setDate.bind(date), addDays)