评论者:favila
“是否有任何证据表明更高频率的使用 str 实际上存在问题?”
Kevin Neaton,他开启了 CLJS-847,在生产中使用了仅处理高阶情况的补丁,他说此补丁为他们解决了问题。他不受 str 宏情况的 str,因为它要么已经使用 ''+x(应用了 CLJS-801)或者使用 {{[x].join('')}}(尚未用 Safari 6.0.5 进行测试,但可能可行)。
如果我们使用 ' '+x 与 str 宏时出现任何问题,那么在 CLJS-847 设置 apply 后,使用字符串函数的 ' '+x 也将存在问题。
我尚未拉取 master,但是这里有一个测试用例,我敢打赌应用 CLJS-847 补丁后会失败。
(def tricky-obj #js {"toString" (fn [] "hello") "valueOf" (fn [] 42)}) (assert (= (apply str tricky-obj) "hello")) ;; 将得到 "42"