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)
我正在尝试通过 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)