gpt4 book ai didi

javascript - 导出 deftype 方法

转载 作者:行者123 更新时间:2023-11-30 08:04:39 26 4
gpt4 key购买 nike

我正在尝试在 javascript 中创建对象并调用一个方法。方法名称被修改。我尝试使用 externs.js 但运气不佳。

(deftype ^:export SceneMain []
Object
(handleShow [_]
(display-categories)))

;; should be used in javascript as:

var s = new SceneMain();
s.handleShow();

;; Uncaught TypeError: Object [object Object] has no method 'handleShow'
;; Uncaught TypeError: Object #<dg> has no method 'handleShow'

这是我的 externs.js

var SceneMain = {};
SceneMain.handleShow = function() {};

最佳答案

不完全确定您要在那里完成什么。

externs.js 在您使用未使用 Google 的 Closure 编译器编译的 Clojurescript 中的外部 javascript 库时很有用,主要原因是当使用超出空格的优化时,编译器不会损坏外部库。

MixPanel Javascript为例应用程序接口(interface)。

假设您有以下使用该 api 的 cljs 代码:

(defn track 
([name data]
(.track js/mixpanel name
(clj->js data)))
([name]
(.track js/mixpanel name)))

你需要在你的 externs.js 中定义

 var mixpanel = {};
mixpanel.track = function() {};

避免 Closure 编译器混淆对该对象/函数的调用。

现在,如果您想从 Javascript 调用 Clojurescript 函数,使用 ^:export 即可。

假设你有:

(ns test.cljs)

(defn ^:export testfn
[]
(.log js/console "test"))

从 javascript 你做的:

 test.cljs.testfn()

关于javascript - 导出 deftype 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20189860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com