javascript - 在原生 JavaScript 函数上使用 apply

标签 javascript clojurescript

在 clojureScript 中有以下多元函数

(defn sum [& xs] (reduce + xs))

可以通过 (sum 4 6 9) 或使用 (apply sum [4 6 9]) 调用,这会产生相同的结果。

如何使用 native JavaScript 函数完成此操作,例如:console.log

(apply js/console.log [1 2 3])

这会产生以下错误:

#object[TypeError TypeError: 'log' called on an object that does not implement interface Console.]

最佳答案

有些浏览器总是假设this是某个对象,你可以在js中使用.bind来临时修复。

; you can use .bind on any function
(def d (.bind (.-log js/console) js/console))
(def ms ["aaa" "bbb" "barbarbar"])
(mapv d ms)

相关问题

What does this statement do? console.log.bind(console)

Why do js functions fail when I assign them to a local variable?

关于javascript - 在原生 JavaScript 函数上使用 apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39053968/

相关文章:

javascript - 谷歌脚本/javascript |为什么 getRange 返回二维数组

javascript - https post 在 javascript 中类似于带有 header 和参数的curl -d 和 "request"模块nodejs npm

javascript - 交付 ClojureScript 桌面应用程序的最正常方式是什么

javascript - div淡入时改变背景颜色

javascript - 删除重复项并合并 JSON 对象

reactjs - 渲染后的 Om 回调(在更改应用程序状态后聚焦元素)

clojure - 如何在 clojure 中将多个语句写在一个 if block 中?

clojurescript - 语言脚本 : extend a Javascript class

使用内置 javascript 模式对 var block 进行 JavaScript 缩进

clojurescript 试剂交换!原子否定原子值