ClojureScript:如何通过原型向 JS 对象添加方法?

2024-01-02

我正在尝试向现有的 JavaScript 系统添加一些功能。然后再次从 JavaScript 使用(而不是在 ClojureScript 命名空间内)。也许这是不可能的?

这是我想做的事情的简化:

// JavaScript
String.prototype.foo = function() {
  return "bar";
}

# CoffeeScript
String::foo = ->
  "bar"

我希望能够运行上面的脚本,然后从代码中的其他地方调用它。

我尝试过搞乱extend-type and defprotocol, 随着export,但似乎没有任何东西暴露我的 foo 函数。

这可能是一个设计决定,ClojureScript 在这里不适合我,但我只是想确保我没有忽略某些东西。


可以这样做:

(set! (.-foo (.-prototype js/String)) (fn [] "bar"))

或者你可以使用..糖:

(set! (.. js/String -prototype -foo) (fn [] "bar"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ClojureScript:如何通过原型向 JS 对象添加方法? 的相关文章

  • Clojure:在特定命名空间中启动 repl

    我安装了 boot clj 并且希望能够在外部编辑器中编辑 clj 文件 并单独运行一个命令行 REPL 我可以从中调用我在 clj 文件中更改的函数 不需要特殊的重新加载命令 另一件事是我不想手动键入命令来包含命名空间 我只想运行一个将我
  • clojure 中的反转哈希映射

    我在 clojure 中有哈希映射 key1 value1 key2 value2 key3 value1 我需要将其转换为哈希映射 value1 key1 key3 value2 key2 有 Clojure 方法可以做到这一点吗 clo
  • clojure 的 emacs slime-connect 版本不会查找 $CLASSPATH

    我需要将 clojure 函数与 slime connect 一起使用 我将所有库都放在 CLASSPATH 中 据我了解这个问题 https stackoverflow com questions 3376840 clojure clas
  • 如何将 CORS 添加到 compojure-api 应用程序?

    如何将 CORS 添加到此代码片段 def app api swagger ui docs spec swagger json GET route a a GET route b b GET route c c 我想用https githu
  • 为从 nginx 反向代理转发的请求添加唯一 id

    我们运行 nginx 作为反向代理 将请求转发到运行 Compojure 的 Clojure 应用程序 Compojure 是一个封装 Jetty 的库 为我们的应用程序提供服务 Web 请求的能力 目前 我们捕获 nginx 和 Cloj
  • 如何创建惰性序列向量

    运行它按预期工作 defn long seq n lazy seq cons list n somekey n 2 long seq n 1 take 3 long seq 3 gt 3 somekey 6 4 somekey 8 5 so
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 好的 Clojure 代码示例? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在第一次查看 Clojure 我发现查看 Clojure 核心库的 doc xxx 和 sourc
  • 从命令行将 clojure 源代码编译为类(AOT)(不使用 lein)

    我正在尝试将 clojure 源代码编译成类文件 并仅使用命令行运行它 没有 lein 也没有 可能 回复 我有 core cljsrc hello目录 src hello core clj 这是源代码 ns hello core defn
  • 用于正则表达式匹配及其在字符串中的位置的紧凑 Clojure 代码

    斯图尔特 哈洛威举了个例子 re seq w The quick brown fox 作为在 Clojure 中查找正则表达式匹配项的自然方法 在他的书中 这种构造与匹配器上的迭代进行了对比 如果人们关心的只是一份比赛列表 那就太好了 但是
  • 适用于具有不同数量数据字段的用户的功能

    这个问题是我练习的时候产生的教程中的观察者主题 http mishadoff com blog clojure design patterns episode 10 observer我试图将该功能应用于用户 但无法使用用户的数据字段 例如姓
  • 枚举和 Clojure

    在Java C世界中 人们经常使用枚举 如果我使用的是使用枚举的 Java 库 我可以在它们和关键字之间进行转换 例如 使用 java lang Enum valueOf e aget Ljava lang Enum e getEnumCo
  • 如何在 Clojure 中链接 Promise

    在 Scala 中 您可以使用map and flatMap在未来的成功结果上运行函数 val x Future Int val y Future String x map toString 有没有比以下更好的 Clojure 类似物 de
  • Clojure:让作用域和函数返回值

    我在弄清楚如何使用 let 形式时遇到了一些麻烦 在下面的示例中 我想在本地绑定值 cols 以便稍后在函数中处理它 然而 我注意到 如果我使用 let 函数 sel opt tmp 将返回 nil 值而不是列表 defn sel opt
  • clojure 要求语法原理

    我很难理解 因此记住 此处描述的 clojure require 语法 http clojuredocs org clojure core 1 3 0 clojure core require http clojuredocs org cl
  • 如何编写 Clojure 宏来从字符串创建正则表达式?

    我正在创建一个方便的宏 部分便利在于可以仅使用字符串来指定正则表达式 而不是使用 re 表示法 我无法弄清楚的一部分是如何让宏获取字符串并将其重写为 Clojure 正则表达式 例如 生成 re 符号 我认为这是一个语法 转义问题 我的第一
  • 确保 Clojure 中只有一个服务实例正在运行/启动/停止的规范方法?

    我正在用 Neo4j 支持的 Clojure 编写一个有状态服务器 它可以服务套接字请求 例如 HTTP 当然 这意味着我需要能够从该服务器内启动和停止套接字服务器 在设计方面 我希望能够在此服务器中声明一个 服务 并启动和停止它 我在 C
  • 有没有好的 Clojure 基准测试?

    Edit Clojure 基准测试已达到基准游戏 http benchmarksgame alioth debian org u64q clojure html 我已经制作了这个问题社区维基并邀请其他人保持更新 有人知道 Clojure 性
  • 如何安装 leiningen 插件?

    如何安装 leiningen 插件 例如 leiningen run 我看到这个叫做 clojars org 的东西 以及如何 推 它 但我没有看到任何关于从中 拉 的东西 如果 Clojars 上有可用的插件 例如 lein run 只需
  • Clojure 符号名称中的美元符号 ($)

    我一直在编写 clojure 解析器并遇到以下语法 defn key Returns the key of the map entry added 1 0 static true java util Map Entry e e getKey

随机推荐

  • 我可以注释“fun”声明的完整类型吗?

    在学习环境中 我可以选择哪些选项来为函数提供类型签名 标准 ML 没有像 Haskell 那样的顶级类型签名 以下是我考虑过的替代方案 模块签名 需要单独的签名文件 或者在与模块本身相同的文件内的单独块中定义的类型签名 这需要使用模块 在任
  • jquery 没有父级的子选择器

    我正在查看创建轮播菜单的教程中的一些代码 并注意到没有父项的父子选择器 以前从未见过这个 并且对它实际在做什么感到困惑 参见下面的代码 var wrapper gt div this css overflow hidden slider w
  • 生成最近两周的日期范围?

    我想生成 2 个 DATETIME 代表从星期日到星期六 2x 的最近两周 它不应该包括当前不完整的一周 感谢你的帮助 一些可以工作的东西 利用美妙的DateTime课程
  • Flutter上如何用pop获取返回值?

    我想知道如何在 Flutter 上使用 pop 获取两个值 我尝试编写代码 但我得到了异常 必须向文本小部件提供非空字符串 这是代码 第一屏 ElevatedButton child const Text move to second sc
  • Powershell 将数据传输到外部控制台应用程序

    我有一个可以接受标准输入的控制台应用程序 它缓冲数据直到执行命令 此时它会执行所有数据 并将输出发送到标准输出 目前 我正在从 Powershell 运行该应用程序 将命令通过管道传输到其中 然后解析输出 传入的数据相对较小 然而 该应用程
  • MySQL 中嵌套循环中的多个游标

    我想做一些在 MySQL 中显得有点复杂的事情 事实上 我希望打开一个游标 执行一个循环 并在这个循环中 使用上一个要执行的提取中的数据打开第二个游标 并重新循环结果 DECLARE idind INT DECLARE idcrit INT
  • 如何确定 Signal R 正在使用哪种传输方法

    我正在使用 signal r 服务器和 Web 客户端编写一个测试应用程序 我想知道是否有办法确定或让服务器知道客户端正在与服务器建立哪种传输方法 对于在客户端和服务器之间具有持久双向连接的 websockets 或持续轮询服务器直到服务器
  • 创建具有过滤范围的单元格内下拉列表

    我正在使用谷歌电子表格 为了说明我的问题 我使用范围A2 A8用于数据验证D2 and E2 但因为在细胞内D2 你应该只选择一种动物 我想用以下内容过滤范围B2 B8 我尝试过的是使用我自己的公式 FILTER A2 A8 IS B2 B
  • 当模板类型是基本类型时通过引用传递的成本

    我一直听说确保最佳性能的良好做法是 通过基本类型 int double 按价值 通过常量引用传递类 如今 使用 C 11 并在编译器下进行全面优化 当通过 const 引用传递基本类型时是否会产生开销 而且 当T is int将实现以下功能
  • 如何防止收到的短信到达收件箱?

    我正在开发一个简单的应用程序 它接收但不处理短信 它检查每条传入的短信是否有特定的关键词 如果短信包含该关键字 那么它会做出相应的响应 如果关键字不存在 那么我的应用程序什么也不做 我有这么多工作 我想知道是否有一种方法可以阻止手机上的默认
  • 鼠标移出时关闭 AJAX 控制工具包 BallonPopupExtender

    有人知道如何从客户端关闭 Ballon Popup Extender 吗 一切都很好 但由于我将 BPE 设置为在鼠标悬停时显示 所以它在鼠标移出时没有任何关闭或隐藏方法 这确实不切实际 我尝试过 function hideElement
  • 为什么要刷新由其他逻辑处理器引起的内存顺序冲突的管道?

    The vTune 文档中描述了 Memory Order Machine Clear 性能事件 https software intel com en us vtune amplifier help mo machine clear ov
  • Flex 到 HTML5 - 表示层(canvas、div、???)

    我的问题是关于从 Flex3 迁移到 HTML5 的问题 我实际上想迁移自己而不是应用程序 问题是 什么方向是最好的 和Flex知识最相似的 也许我会重新实现我的 Flex 库中已有的一些自定义组件 我认为我必须在 HTML5 中自己实现一
  • Java中的多态复制

    我突然遇到了一个用Java进行深度多态复制的问题 实施Clonable解决了我的问题 但它通常被称为 坏 技术 因此 我尝试寻找 不可克隆 的解决方案 public class Parent int x public Parent publ
  • C 中空结构的大小是多少?

    据我说 它是零 但似乎有点混乱here https stackoverflow com questions 1626017 why sizeofspinlockt is greater than zero on uni processor
  • 通过套接字使用 boost 发送和接收压缩文件

    在我的项目中 通过套接字读取和写入消息是使用 boost 的 Zlib 过滤器进行压缩的 我想知道如何执行相同的操作files 有什么更好的方法可以提高速度 不使用硬盘将数据保存在缓冲区中 我在使用 boost 传输文件时遇到问题 因此欢迎
  • 带有关闭按钮的 Angular UI Bootstrap 弹出框

    我正在使用 Angular UI Bootstrap 创建弹出窗口 但我找不到在弹出窗口内添加关闭按钮的选项 我自定义了弹出框模板以包含关闭按钮 但我仍然无法找到关闭弹出窗口的函数 事件 环境isOpenfalse 第一次起作用 因为它只是
  • 如何在 PHP-CS-Fixer 中配置 HeaderCommentFixer

    我想用HeaderCommentFixer https github com FriendsOfPHP PHP CS Fixer blob 1 12 Symfony CS Fixer Contrib HeaderCommentFixer p
  • 将 Github 页面重定向到自定义域

    我创建了一个 Github Pages 站点 并将其放在 github 帐户的存储库 abc 上 用户名为 xyz 所以 我的网站现在位于 xyz github io abc 我使用自定义域创建了一个 cname 文件 并使用 Github
  • ClojureScript:如何通过原型向 JS 对象添加方法?

    我正在尝试向现有的 JavaScript 系统添加一些功能 然后再次从 JavaScript 使用 而不是在 ClojureScript 命名空间内 也许这是不可能的 这是我想做的事情的简化 JavaScript String protot