如何使用clojurescript中的构造函数声明javascript对象

时间:2018-01-24 10:03:22

标签: javascript clojurescript

我的代码适用于realm库,在某些时候它调用了realm构造函数:

(dependencies/realm. (clj->js options))

Realm被宣布为:

(def realm (js/require "realm"))

现在我想暂时模拟realm对象,不要调用库。我试过这种方法:

(def realm  #js {:schemaVersion (fn [])
                 :close         (fn [])})

它适用于模拟close()和schemaVersion()函数,但我收到错误dependencies.realm is not a constructor

如何将构造函数声明添加到realm对象占位符?

感谢。

1 个答案:

答案 0 :(得分:0)

在javascript中,构造函数是一个函数。相反,您应该有一个返回对象的函数:

(def realm (fn [] #js {}))

我认为schemaVersionclose是静态方法。您可以稍后使用以下内容添加它们:

(goog.object/extend realm #js {:schemaVersion (fn [])
                               :close         (fn [])})