如何在javascript中使用clojurescript中的复杂返回对象

如何在javascript中使用clojurescript中的复杂返回对象,javascript,interop,clojurescript,Javascript,Interop,Clojurescript,我想编写一个clojurescript函数,它返回一个复杂的项,比如[“foo”“bar”]或(list“foo”“bar”),我想能够从javascript调用这个函数并获取返回值的部分。怎样才能做到呢?在我的例子中,我返回的向量/列表/集合中的项目数是预先知道的,集合应该保持有序 这是我的clojurescript函数。我可以在这里做些不同的事情,如果它能让事情变得更简单的话。只是不知道那会是什么 (defn myFn [] ["foo" "bar"]) 下面是它编译成javascript

我想编写一个clojurescript函数,它返回一个复杂的项,比如[“foo”“bar”]或(list“foo”“bar”),我想能够从javascript调用这个函数并获取返回值的部分。怎样才能做到呢?在我的例子中,我返回的向量/列表/集合中的项目数是预先知道的,集合应该保持有序

这是我的clojurescript函数。我可以在这里做些不同的事情,如果它能让事情变得更简单的话。只是不知道那会是什么

(defn myFn [] ["foo" "bar"])
下面是它编译成javascript后的样子。此部分完全由前一位代码确定/生成。要在这里进行更改,我必须知道如何调整clojurescript中的前一部分

my.ns.myFn = function myFn() {
  return cljs.core.PersistentVector.fromArray(["foo", "bar"], true)
};
当我在javascript中执行以下操作时,我看到弹出一个带有[“foo”“bar”]的警报框

但如果我尝试以下操作,警报将显示“未定义”而不是“foo”


我应该做些什么来让警报显示“foo”?(嗯,我想我可以写更多的clojurescript来使用这个值,看看编译成javascript时它是如何出现的…

所以我写了更多的clojurescript来使用myFn及其返回值。生成的javascript如下所示:

var tmp = my.ns.myFn.call(null);
var first = cljs.core.first.call(null, tmp);
var second = cljs.core.nth.call(null, tmp, 1);
在clojurescript中:

(ns foo.core)
(定义:导出条形图[x](数组0 1 2))

在javascript中:

var result\u array=foo.core.bar(x)


。。。使用
result\u数组
作为普通的javascript数组。

您能发布您的代码吗?更好地解释你想要实现什么?
var tmp = my.ns.myFn();
alert(tmp[0]);
var tmp = my.ns.myFn.call(null);
var first = cljs.core.first.call(null, tmp);
var second = cljs.core.nth.call(null, tmp, 1);