有什么方法可以像 ClojureScript 函数一样对待 Javascript 方法吗?

问题描述 投票:0回答:1

我喜欢 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 就是例子。我希望能够在不使用库的情况下对日期执行简单的操作。

clojurescript clojurescript-javascript-interop
1个回答
0
投票

我认为这给了你一条路(我不相信它很棒):

user> (let [f js/Date.prototype.getSeconds]
        (.call f (js/Date.)))
46
© www.soinside.com 2019 - 2024. All rights reserved.