我喜欢 ClojureScript,但是 CLJS 和 Javascript 之间的互操作很困难。我想创建一个可以以任意单位执行日期计算的函数,如下所示。但这段代码会导致错误。难道不能把
.foo
之类的JS方法当作函数来对待吗?
(defn date-add [date num unit]
(let [[getter setter]
(case unit
:sec [.getSeconds .setSeconds]
:min [.getMinutes .setMinutes]
:hour [.getHours .setHours]
:day [.getDate .setDate]
:month [.getMonth .setMonth]
:year [.getYear .setYear])]
;; such as (.setDate date (+ num (.getDate date)))
(setter date (+ num (getter date)))
(js/Date. (.getTime date))))
虽然我知道像
deja-fu
或 cljs-time
这样很棒的库,但 avobe 就是例子。我希望能够在不使用库的情况下对日期执行简单的操作。
我认为这给了你一条路(我不相信它很棒):
user> (let [f js/Date.prototype.getSeconds]
(.call f (js/Date.)))
46