评论者:favila
bq. 是否有证据表明增加对 str 的使用实际上存在问题?
CLJS-847 的提交者 Kevin Neaton 在生产中使用了一个补丁,该补丁仅解决了一阶情况,并表示补丁已解决他们的问题。他没有受到 str 宏情况的影響,因为要么它已经使用了 ''+x 并且应用了 CLJS-801,要么它使用了 {{[x].join('')}}(尚未与 Safari 6.0.5 进行测试,但可能有效)。
因此,如果我们使用 ''+x 与 str 宏有问题,那么只要应用 CLJS-847,我们使用 ''+x 与字符串函数一定会有问题。
我尚未抓取 master,但是这里有一个测试用例,我认为它将在 CLJS-847 补丁的情况下失败:
(def tricky-obj #js {"toString" (fn [] "hello") "valueOf" (fn [] 42)}) (assert (= (apply str tricky-obj) "hello")) ;; 将得到 "42"